【问题标题】:Capybara click_button works, but how do I evaluate the JSON response?Capybara click_button 有效,但如何评估 JSON 响应?
【发布时间】:2012-01-06 01:34:33
【问题描述】:

Soo,如果 Capybara 可以与 DOM 交互,并且我的应用程序通过 AJAX 提交表单并返回一些 JSON,Capybara 能看到吗?我没有找到任何方法来获取 Capybara API 中的 AJAX 响应。

这是我正在做的一个例子:

# 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 响应是否符合我的想法。

我只是在这里尝试,尝试习惯 Cucumber 和 Capybara。

【问题讨论】:

  • 所以我认为这是不可能的?
  • 我也有同样的问题。同时你有没有找到任何相关信息?

标签: ruby-on-rails ajax json cucumber capybara


【解决方案1】:

您应该通过使用@javascript 标记您的场景/功能以作为 JavaScript 功能运行:

@javascript
Scenario: Title goes here

这将告诉 Cucumber 运行 selenium-webdriver gem,它将启动一个真正的浏览器 (Firefox) 并在该浏览器中运行测试。浏览器当然会评估 JavaScript,然后 Capybara 将能够看到它输出的内容。

【讨论】:

  • 是的,我已经在场景定义上方有@javascript,这一切都很好,除了我想知道在它发生后我如何获得 JSON 响应(并且可能跟踪 dom过程中的事件)。 AJAX 响应不会影响页面上的任何内容,因此我无法使用page 来评估发生的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多