Search code examples
phptddbddprophecy

How to mock the same method in Prophecy so it returns different response in each of its calls


In pure PHPUnit mocking I can do something like this:

$mock->expects($this->at(0))
    ->method('isReady')
    ->will($this->returnValue(false));

$mock->expects($this->at(1))
    ->method('isReady')
    ->will($this->returnValue(true));

I was not able to do the same thing using Prophecy. Is it possible?


Solution

  • You can use:

    $mock->isReady()->willReturn(false, true);
    

    Apparently it's not documented (see https://gist.github.com/gquemener/292e7c5a4bbb72fd48a8).