2015-10-07 4 views
0

У меня есть форма в приложении 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 

ответ

1

Вы должны быть с помощью JavaScript, способный драйвер для Ajax представления на работу - см https://github.com/jnicklas/capybara#drivers

+0

Спасибо. Это определенно ответ, но в конечном итоге это не моя настоящая проблема. Я приму это и отредактирую свой пост, чтобы он содержал только соответствующие материалы – justinxreese

Смежные вопросы