У меня возникла странная проблема с объектами макета PHPUnit. У меня есть метод, который следует вызывать дважды, поэтому я использую "at" matcher. Это работает в первый раз, когда метод вызывается, но по какой-то причине, во второй раз, когда он вызывался, я получаю "Mocked method does not exist.". Раньше я использовал совпадение "at" и никогда не сталкивался с этим.
Мой код выглядит примерно так:
class MyTest extends PHPUnit_Framework_TestCase
{
...
public function testThis()
{
$mock = $this->getMock('MyClass', array('exists', 'another_method', '...'));
$mock->expects($this->at(0))
->method('exists')
->with($this->equalTo('foo'))
->will($this->returnValue(true));
$mock->expects($this->at(1))
->method('exists')
->with($this->equalTo('bar'))
->will($this->returnValue(false));
}
...
}
Когда я запускаю тест, я получаю:
Expectation failed for method name is equal to <string:exists> when invoked at sequence index 1.
Mocked method does not exist.
Если я удаляю второй матчи, я не получаю ошибку.
Кто-нибудь сталкивался с этим раньше?
Спасибо!