Я думаю, когда Вы начинаете думать об интеграционных тестах, Вы говорите больше пересечения физических уровней, а не логических слоев.
, Например, если Ваши тесты интересуются генерацией содержания, это - модульный тест: если Ваш тест интересуется просто записью в диск, это - все еще модульный тест, но как только Вы тестируете и на ввод-вывод И НА содержание файла, то у Вас есть самостоятельно интеграционный тест. При тестировании вывода функции в сервисе это - модульный тест, но как только Вы делаете служебный вызов и видите, является ли функциональным результатом то же, то это - интеграционный тест.
Технически Вы не можете модульный тест just-one-class так или иначе. Что, если Ваш класс составлен с несколькими другими классами? Это автоматически делает его интеграционным тестом? Я не думаю так.
Используйте assert_routing
для тестирования маршрутов:
assert_routing("/photos/10/style", :controller => "photos", :action => "show", :id => "10", :style => [])
assert_routing("/photos/10/style/cool", :controller => "photos", :action => "show", :id => "10", :style => ["cool"])
assert_routing("/photos/10/style/cool/and/awesome", :controller => "photos", :action => "show", :id => "10", :style => ["cool", "and", "awesome"])
Затем в интеграционном тесте вы можете выполнить:
test "get photos" do
get "/photos/10/style/cool"
assert_response :success
end
Подстановка маршрутов
Указание
* [строка]
как часть такое правило:map.connect '* path',: controller => 'blog',: action => 'unrecognized?'
переместит все оставшиеся части маршрут, который не был распознан ранее. Глобальные значения находятся в
params [: path]
как массив путей сегменты.
Похоже, вам нужно передать аргументы : path
, чтобы правильно протестировать действие.