Пытаюсь начать разрабатывать с использованием phpUnit. Раньше использовал метод, когда сразу пишу цепочки вызовов, а код самих классов дописываю потом.
Сейчас делаю точно так же, только сразу пишу тесты с ассертами, а затем пытаюсь их пройти, дописывая код методов по мере надобности. Здесь здорово помогают Mock, но не получается создать для несуществующих классов и методов.
Тест тестирующий ещё не написанный notExistsMethod не работает
Fatal error: Call to undefined method Mock_Foo_5fe30c3b::notExistsMethod() in MockTest.php on line 28
PHP:
$url = new Url('controller', 'action');
$url->setController('controller');
$url->setAction('action');
$url->set('page', 10);
echo $url; // controller/action/page:10/
PHP:
<?php
class Foo {
public function getItem($id) {
}
}
class Kiss_MockTest extends PHPUnit_Framework_TestCase {
public function testOne() {
$class = $this->getMock('Foo');
$class->expects($this->any())
->method('getItem')
->will($this->returnCallback(array($this, 'callbackGetItem')));
$this->assertEquals(1, $class->getItem(1));
$this->assertEquals(2, $class->getItem(2));
$this->assertEquals(1, $class->getItem(1));
}
public function testTwo() {
$class = $this->getMock('Foo');
$class->expects($this->any())
->method('notExistsMethod')
->will($this->returnCallback(array($this, 'callbackGetItem')));
$this->assertEquals(1, $class->notExistsMethod(1));
}
public function callbackGetItem($value) {
switch ($value) {
case 1:
return 1;
break;
case 2:
return 2;
break;
}
}
}
?>
Fatal error: Call to undefined method Mock_Foo_5fe30c3b::notExistsMethod() in MockTest.php on line 28