【发布时间】:2018-12-27 17:39:52
【问题描述】:
我有这样的课:
<?php
class Apple {
public function foo($arg1){
if ($arg1 == 0){
$this->bar($arg1);
}
}
public function bar($arg){
//do something
}
}
我有一个这样的单元测试:
class AppleTest extends TestCase{
/**
* it's unit test for method Apple::foo
*/
public function testFoo(){
$mock = $this->getMockBuilder('Apple')
->setMethods(['bar'])
->getMock();
$mock->expects($this->once())
->method('bar')
->with($this->equalTo(0));
$mock->foo(0);
}
}
有人告诉我,我不能对正在测试的课程使用模拟。我被告知我应该使用类的实例而不是它的模拟,因为当我使用模拟时它不是实际测试。有人可以对此提出异议吗?
【问题讨论】:
-
Mocking 用于外部依赖。模拟您正在测试的类是没有意义的,因为除了您编写的单元测试代码之外,您实际上不会测试任何东西。
标签: php unit-testing testing phpunit