Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit测试和抽象类,方法名为';方法';_Php_Unit Testing_Phpunit - Fatal编程技术网

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');