Я тестирую абстрактный класс, который имеет метод 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')); }
}