С Mockery , который интегрируется с PHPUnit, но является намного превосходящей библиотекой насмешек, вы могли бы написать это так:
$model = m::mock('model');
$model->shouldReceive('state')->andReturn($returnValue, $differentReturnValue);
Очевидно, насколько красивее API Mockery. Это ода читаемому коду. Читается как текст ...
модель должна получать состояние и возвращаемые значения
Вы можете добавить ограничение, что метод должен вызываться ровно дважды, например:
$model->shouldReceive('state')->twice()->andReturn($value, $differentValue);
Если вы хотите передать аргументы, это выглядит так:
$model->shouldReceive('state')->withNoArgs()->andReturn($value)->once();
$model->shouldReceive('state')->with('saved')->andReturn($differentValue)->once();