Я пытаюсь объявить ожидание, которое имеет два возможных значения в качестве параметра, на основе значения, которое я хочу, чтобы возвращаемое значение было другим.
Вот что я пробовал
$mock = m::mock('FooBar\ClassA');
$mock->shouldReceive('has')->with('foo')->andReturn(false);
$mock->shouldReceive('has')->with('bar')->andReturn(true);
я получаю эту ошибку
Mockery\Exception\NoMatchingExpectationException: не найден соответствующий обработчик для Mockery
andReturnUsing
_FooBar_ClassA::has("bar")
Я прочитал http://docs.mockery.io/en/latest/reference/expectations.html
но я не могу найти ответ. Я пытаюсь прибегнуть к прямолинейному решению проблемы с помощью andReturnUsing
. Есть ли способ решить проблему без использования andReturnUsing
?
$mock->shouldReceive('has')->andReturnUsing(function ($value) {
switch ($value) {
case 'foo': return false;
case 'bar': return true;
}
});
Я также читал Насмешки с указанием ожидаемых аргументов для нескольких вызовов
Но это то же самое, что я пробовал, это принудительная проверка типа параметра.