Я столкнулся со странной проблемой с фиктивными объектами PHPUnit. У меня есть метод, который должен вызываться дважды, поэтому я использую сопоставление at. Это работает в первый раз, когда вызывается метод, но по какой-то причине, во второй раз, когда он вызывается, я получаю «Заблокированный метод не существует». Я использовал "at" matcher раньше и никогда не сталкивался с этим.
Мой код выглядит примерно так:
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.
Если я удаляю второе средство сопоставления, я не получаю ошибку.
Кто-нибудь сталкивался с этим раньше?
Спасибо!