2014-02-17 5 views
0

Предположим, у меня есть код с реализацией шаблона шаблона метода шаблона. И я хочу проверить последовательность и количество вызовов методов в моем методе шаблона. Я пытаюсь использовать PHPUnit mocks. Мой исходный код выглядит следующим образом:Тестирование шаблона шаблона проектирования шаблона шаблона с PHPUnit Mock Objects

class Foo { 

    public function __construct() {} 

    public function foobar() { 
     $this->foo(); 
     $this->bar(); 
    } 

    protected function foo() {} 

    protected function bar() {} 
} 


class FooTest extends PHPUnit_Framework_TestCase { 

    public function testFoo() { 
     $fooMock = $this->getMock('Foo', array('foo', 'bar')); 

     $fooMock->foobar(); 

     $fooMock->expects($this->once())->method('foo'); 
     $fooMock->expects($this->once())->method('bar'); 
    } 
} 

В результате у меня есть такая ошибка:

PHPUnit_Framework_ExpectationFailedException : 
Expectation failed for method name is equal to <string:foo> when invoked 1 time(s). 
Method was expected to be called 1 times, actually called 0 times. 

Можно ли рассчитывать метод вызывает в таком сценарии, используя фиктивные объекты?

ответ

0

Это просто моя глупая ошибка. Неверная последовательность создания ложных объектов:

// ... 

public function testFoo() { 
    $fooMock = $this->getMock('Foo', array('foo', 'bar')); 
    $fooMock->expects($this->once())->method('foo'); // (!) immediately after   
    $fooMock->expects($this->once())->method('bar'); // mock object instantiation 

    $fooMock->foobar(); 
} 
Смежные вопросы