Тестирование before_filter называют в действии

Как можно было бы протестировать это, когда к действию в контроллере получают доступ, что before_filter контроллера будет выполняться?

before_filter тестируется в отдельной группе в качестве примера так, чтобы не было никакой потребности копировать тесты для всех действий, которые зависят от before_filter.

Если я имею

controller.should_receive(:my_before_filter)

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

Как преодолеть это ограничение или дразнить поведение my_before_filter (это устанавливает переменную экземпляра на контроллере)? Или есть ли некоторый лучший способ сделать это?


Поскольку теперь ясно, что я делал все это неправильно, я все еще хотел бы знать, как можно было дразнить поведение before_filter, который устанавливает переменную экземпляра. Конечно, это должно быть возможное, чтобы сделать это в спецификации контроллера?

5
задан mnylen 10 July 2010 в 08:29
поделиться

2 ответа

При тестировании фильтра слишком внимательно рассматривается реализация, ИМО. Вы хотите убедиться, что присвоение переменной экземпляра происходит, а не происходит ли оно в фильтре или в действии - тестируйте результат, а не реализацию.

7
ответ дан 13 December 2019 в 19:20
поделиться

should_receive в RSpec подразумевает, что вы ожидаете получить метод, но как имитатор метода, поэтому он не вызывает настоящий метод, которым в данном случае является "my_before_filter".

http://axonflux.com/rspecs-shouldreceive-doesnt-ac

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

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

Кстати, если вам нужно, чтобы он возвращал значение, вы можете посмотреть "Возвращаемые значения" на следующей странице.

http://rspec.info/documentation/mocks/message_expectations.html

3
ответ дан 13 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: