使用名为 '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'));
}
}
我正在测试一个抽象 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'));
}
}