PHPUnit тестовый и абстрактный класс с помощью метода «Метод»

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

}