Я хотел бы протестировать несколько аспектов поведения контроллера или страницы как отдельные тесты, но ускорить мои тесты, но только запуск загрузки страницы контроллера или капибары один раз для нескольких проверок.Например, при тестировании контроллера:
it "should include all videos in the list of all videos" do
get :show, id: event.id
response.should be_somehow
end
it "should set the main video to be the paid video" do
get :show, id: event.id
response.should be_somehow_else
end
Я бы хотел, чтобы это стало:
before :all do
get :show, id: event.id
end
it "should include all videos in the list of all videos" do
response.should be_somehow
end
it "should set the main video to be the paid video" do
response.should be_somehow_else
end
Проблема в том, что RSpec очищает объект ответа (или для капибары).Объект страницы) после каждого теста.Итак, проверяю ли я assigns
в тестах контроллера, response
объекты или page
результаты в Капибаре, ничего подобного не работает:
before :all do
get :show, id: event.id
@response = response
end
example "it should do something" do
@response.should be_somehow # test works
end
example "it should do something else" do
@response.should be_somehow_else # test fails; @response has been flushed by Rails testing facilities
end
Так что решение для ускорения теста состоит в том, чтобы иметь несколькопроверяет в одном тесте:
example "it should be totally correct in every way" do
get :show, id: event.id
response.should be_somehow # test works
response.should be_somehow_else # test works
end
Но это оскорбляет мою чувствительность к именованию тестов.
Это, безусловно, самое отягчающее в Капибаре, в которой у меня может быть многошаговая настройка(вход в систему, разрешение) и 15 проверок при загрузке одной страницы: все ли правильно?Разве другие, неправильные вещи не показывали?Связаны ли действия JavaScript с правильными вещами?Правильный шаблон основы был предоставлен?Эти тесты быстро превращаются в 20 непрерывных строк операторов should
со встроенными комментариями Ruby, поэтому я могу вспомнить, что я тестирую, и это просто беспорядок.
Прежде чем все скажут мне не поддерживать состояние теста от теста допроверить, это не то, что я делаю: я хочу проверить независимые переменные, связанные с одним состоянием.
Спасибо