PHPUnit测试和抽象类,方法名为';方法';
我正在测试一个抽象类,它有一个名为PHPUnit测试和抽象类,方法名为';方法';,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我正在测试一个抽象类,它有一个名为method的方法 这是我的抽象类(节略): 这是我的PHPUnit课程: class ClassToTestTest extends PHPUnit_Framework_TestCase { public $object = NULL; public function setUp() { $this->object = $this->getMockForAbstractClass('ClassToTest'); } pu
method
的方法
这是我的抽象类(节略):
这是我的PHPUnit课程:
class ClassToTestTest extends PHPUnit_Framework_TestCase {
public $object = NULL;
public function setUp() {
$this->object = $this->getMockForAbstractClass('ClassToTest');
}
public function testMethod() {
// passing no value should return NULL
$this->assertNull($this->object->Method());
// passing a value should return a value
$this->assertEquals($this->object->Method($method), 'return_value');
}
}
基于我应该能够使用
$stub->expects($this->any())->method('Method')->willReturn('foo');
不知怎么的,但我不知道该怎么做
如何使用PHPUnit测试名为method
的方法
此外,我没有将该方法重命名为其他方法的选项。您正在测试的类肯定是您不应该模拟的唯一类。如果您伪造了它的方法调用,就不会真正测试它 因为类是抽象的,所以需要通过具体的实现来测试它。如果没有,请为测试创建它
类MyClassToTest扩展了ClassToTest
{
//实现抽象方法
}
class ClassToTest扩展了PHPUnit\u框架\u测试用例
{
私人物品;
受保护的函数设置()
{
$this->object=newmyclasstotest();
}
公共函数testMethod()
{
$this->assertSame('return_value',$this->object->Method('foo');
}
}有一组类继承自此抽象类,因此我可以用这种方式对其进行测试,但该方法是在抽象类中声明和定义的,因此抽象类测试应该测试该方法,而不是依赖继承的类来测试。请使用其中一个实现来测试抽象类。您可以拥有一个公共测试用例类,所有实现测试都将继承该类(因为所有实现测试都将共享此行为)。无论哪种方式,模拟测试中的类都不是一种方式。
$stub->expects($this->any())->method('Method')->willReturn('foo');