Я тестирую абстрактный класс, который имеет метод, называемый Method
.PHPUnit тестовый и абстрактный класс с методом «Метод»
Вот мой абстрактный класс (в сокращенном виде):
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
?
Кроме того, у меня нет возможности переименовать метод на что-то еще.
Есть набор классов, которые наследуют от этого абстрактного класса, так что я могу проверить это таким образом, но метод объявлен и определен в абстрактном классе, так что делает что тест абстрактного класса должен проверять метод и не полагаться на унаследованный класс для его проверки. –
Используйте одну из реализаций, чтобы протестировать абстрактную. У вас может быть общий класс тестов, который все наследования будут наследовать (поскольку все они будут разделять это поведение). В любом случае, насмешливый класс тестирует НЕ. –