Если Ваше действие контроллера похоже на это:
respond_to do |format|
format.html { raise 'Unsupported' }
format.js # index.js.erb
end
и Ваше функциональное испытание похоже на это:
test "javascript response..." do
get :index
end
это выполнит ответвление HTML respond_to блока.
Если Вы пробуете это:
test "javascript response..." do
get 'index.js'
end
это выполняет представление (index.js.erb), не выполняя действие контроллера!
Передайте :format
с вашими обычными параметрами, чтобы вызвать ответ в этом формате.
get :index, :format => 'js'
Нет необходимости возиться с заголовками запроса.
Установите для принятого типа содержимого нужный вам тип:
@request.accept = "text/javascript"
Объедините это с тестом get: index
, и он сделает соответствующий вызов контроллеру.
Используйте это перед запросом:
@request.env['HTTP_ACCEPT'] = 'text/javascript'
с rspec:
it "should render js" do
xhr :get, 'index'
response.content_type.should == Mime::JS
end
и в действии вашего контроллера:
respond_to do |format|
format.js
end