There is another documented way to do that. If you expect a different result on a second call, it means something has changed in between, and you probably used a setter to modify the object's state. This way you can tell your mock to return a specific result after calling a setter with specific argument.
$mock->isReady()->willReturn(false);
$mock->setIsReady(true)->will(function () {
$this->isReady()->willReturn(true);
});
// OR
$mock->setIsReady(Argument::type('boolean'))->will(function ($args) {
$this->isReady()->willReturn($args[0]);
});
More about it here https://github.com/phpspec/prophecy#method-prophecies-idempotency.