Capybara click_button работает, но как мне оценить ответ JSON? - PullRequest
3 голосов
/ 06 января 2012

Так, если Capybara может взаимодействовать с DOM, и мое приложение отправляет форму через AJAX и возвращает JSON, может Capybara это увидит? Я не нахожу способа получить ответ AJAX в API Capybara.

Вот пример того, что я делаю:

# Cucumber step_definition
Then(/^I should be able to create a household$/) do
  click_link 'Next'
  page.should have_selector 'form#household-form'
  fill_in 'Name', with: name = Faker::Name.last_name
  click_button 'Create'
  page.wait_until do
    page.evaluate_script('$.active') == 0 # really awesome hack to wait for ajax
  end
  @user.reload.households.first.name.should eq name
end

Я бы предпочел не обращаться к базе данных снова, чтобы проверить результат, а вместо этого сделать что-то вроде:

xhr.response_data.should be_json

Проверка того, что мой ответ json - это то, что я и думал.

Я просто экспериментирую здесь, пытаясь привыкнуть к огурцу и капибаре.

1 Ответ

3 голосов
/ 06 января 2012

Вы должны пометить свой сценарий / функцию для запуска как функцию JavaScript, пометив ее как @javascript:

@javascript
Scenario: Title goes here

Что это будет делать, это сказать Cucumber запустить gem селен-webdriver,запустите настоящий браузер (Firefox) и запустите тест внутри этого браузера.Браузер, конечно, оценит JavaScript, и тогда Capybara сможет увидеть, что он выводит.

...