我正在测试一个抽象类,该类具有一个名为Method
的方法。
这是我的抽象类(删节):
abstract class ClassToTest {
function Method($_value = NULL) {
// based on the value passed in a different value is returned.
}
}
这是我的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');
}
}
基于 PHPUnit 文档,我应该能够使用
$stub->expects($this->any())->method('Method')->willReturn('foo');
不知何故,但我无法弄清楚如何使这项工作。
如何使用 PHPUnit 测试名为 Method
的方法?
另外,我无法选择将该方法重命名为其他名称。
你正在测试的类肯定是唯一不应该嘲笑的类。如果您伪造了它的方法调用,您将不会真正测试它。
由于您的类是抽象的,因此您需要通过具体的实现对其进行测试。如果没有,请为测试创建它。
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'));
}
}