2015-11-20 9 views
5

Могу ли я как-то обновить shouldReturn значение для конкретного shouldReceive?Update mockery's andReturn

Например, у меня есть несколько тестов, которые используют одно возвращаемое значение, и только одно, которое использует другое возвращаемое значение.

Так что я положил это в нАлАдкА:

$this->someDependency->shouldReceive('someMethod')->andReturn(0); 

Если бы это в данном конкретном тесте:

$this->someDependency->shouldReceive('someMethod')->andReturn(1); 

Он будет проигнорирован и 0 будут возвращены.

Я «исправил» это перемещение, издеваясь над всеми тестами и удаляя из setUp. Но мне не нравится дублирование кода.

+0

который является дискриминатором для определения, когда возвращается 1 вместо 0? Возможно ли использование данных аргумента метода? Если да, проверьте метод 'with()' – Matteo

+1

Фактически я вызываю этот метод без аргументов. Эта зависимость - это репозиторий доктрины и этот метод подсчета, поэтому я могу иметь более одного значения независимо от аргументов. –

+0

Вы пытались использовать метод 'andReturn (value1, value2, ...)', который можно найти в [Документы Mockery] (http://docs.mockery.io/en/latest/reference/expectations.html)? –

ответ

2

Это в основном вопрос стиля. Вы можете легко создать набор дефолтов по умолчанию в вспомогательной функции, вызываемой тестом, а затем более явную альтернативную версию, которая устанавливает их по-разному.

Некоторые люди считают, что каждый тест должен быть полностью независимым друг от друга, кроме как очень распространенной установки, и должен делать все в себе. Это делает его явным в отношении того, что происходит (что очень ясно и очевидно, что происходит), но при потенциальной стоимости дублирования кода. Это ваш выбор, однако, если вы предпочитаете не повторять слишком много.

+0

Спасибо Алистер, вы правы насчет независимых тестов. Но, возможно, есть способ обновить shouldReceive в издевательствах, поэтому я не отмечаю этот ответ, как принято. –

 Смежные вопросы

  • Нет связанных вопросов^_^