使用名为 'Method' 的方法进行 PHPUnit 测试和抽象 class

PHPUnit test and abstract class with a method named 'Method'

我正在测试一个抽象 class,它有一个名为 Method 的方法。

这是我的摘要class(删节):

abstract class ClassToTest {

  function Method($_value = NULL) {
    // based on the value passed in a different value is returned.
  }
}

这是我的 PHPUnit class:

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

基于PHPUnit Documentation我应该可以使用

$stub->expects($this->any())->method('Method')->willReturn('foo');

不知何故,但我不知道该怎么做。

如何使用 PHPUnit 测试名为 Method 的方法?

此外,我没有将方法重命名为其他名称的选项。

Class 你正在测试的肯定是唯一 class 你不应该嘲笑的。如果你伪造了它的方法调用,你就不会真正测试它。

由于您的 class 是抽象的,您需要通过具体的实现来测试它。如果您没有,请创建它以供测试。

class MyClassToTest extends ClassToTest
{
    // implement abstract methods
}
class ClassToTestTest extends PHPUnit_Framework_TestCase
{
    private $object;

    protected function setUp()
    {
        $this->object = new MyClassToTest();
    }

    public function testMethod()
    {
        $this->assertSame('return_value', $this->object->Method('foo'));
    }

}