В направляющих, как делают Вас функциональное испытание формат ответа JavaScript?

Если Ваше действие контроллера похоже на это:

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), не выполняя действие контроллера!

34
задан Teflon Ted 1 March 2010 в 18:49
поделиться

4 ответа

Передайте :format с вашими обычными параметрами, чтобы вызвать ответ в этом формате.

get :index, :format => 'js'

Нет необходимости возиться с заголовками запроса.

60
ответ дан 27 November 2019 в 16:11
поделиться

Установите для принятого типа содержимого нужный вам тип:

@request.accept = "text/javascript"

Объедините это с тестом get: index , и он сделает соответствующий вызов контроллеру.

5
ответ дан 27 November 2019 в 16:11
поделиться

Используйте это перед запросом:

@request.env['HTTP_ACCEPT'] = 'text/javascript'
3
ответ дан 27 November 2019 в 16:11
поделиться

с rspec:

it "should render js" do
  xhr :get, 'index'
  response.content_type.should == Mime::JS
end

и в действии вашего контроллера:

respond_to do |format|
  format.js
end
25
ответ дан 27 November 2019 в 16:11
поделиться
Другие вопросы по тегам:

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