У меня есть форма в приложении rails, которое отправляет данные удаленно в действие контроллера. Тогда есть JavaScript, который ждет успешного ответа AJAX, а затем обновляет сегменты страницы.Capybara перенаправление на ответ JSON
При тестировании с помощью Turnip, Rspec и Capybara, current_page
перенаправляется на ответ JSON вместо того, чтобы оставаться на странице, как я ожидаю.
Вот некоторые из кода:
Действие регулятора удара
def update
@conversation.update(conversation_params)
@conversation.save
render json: @conversation, serializer: ConversationSerializer
end
Форма
= simple_form_for(convo, remote: true, method: :json) do |f|
- f.fields_for :messages, Message.new(conversation: f.object) do |msg|
= msg.input :text, label: 'Message'
= msg.submit 'Post Message', id: 'message-submit'
CoffeeScript прослушивания успеха
$(document).on 'ajax:success', 'form[data-remote]', (xhr, data, status) ->
new_message_id = data.conversation.conversation_messages.pop().id
$.get '/conversation_messages/'+new_message_id+'/partial', (data) ->
$('#conversation .message').last().after(data)
$(document).on 'ajax:success', 'a[data-remote]', (xhr, data, status) ->
location.reload()
$(document).on 'ajax:success', 'form[data-remote]', (xhr, data, status) ->
location.reload()
тест, который показывает неверное содержание
step 'I say :message' do |message|
fill_in 'Message', with: message
click_on 'Post Message'
end
step 'I see the conversation message :message from :username' do |message, username|
expect(page).to have_selector('.conversation-message-sender', text: username)
expect(page).to have_selector('.conversation-message-text', text: message)
end
Спасибо. Это определенно ответ, но в конечном итоге это не моя настоящая проблема. Я приму это и отредактирую свой пост, чтобы он содержал только соответствующие материалы – justinxreese