我正在测试一个抽象类,它有一个名为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 Documentation我应该可以使用
$stub->expects($this->any())->method('Method')->willReturn('foo');
不知何故,但我无法弄清楚如何使这项工作。
如何使用PHPUnit测试名为Method
的方法?
另外,我没有选择将方法重命名为其他内容。
答案 0 :(得分:2)
您正在测试的课程肯定是您不应该嘲笑的唯一课程。如果你伪造它的方法调用,你就不会真正测试它。
由于您的类是抽象的,您需要通过具体实现来测试它。如果您没有,请为测试创建它。
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'));
}
}