ruby-on-rails - Capybara click_button 有效,但我如何评估 JSON 响应?

标签 ruby-on-rails ajax json cucumber capybara

那么,如果 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。

最佳答案

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

@javascript
Scenario: Title goes here

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

关于ruby-on-rails - Capybara click_button 有效,但我如何评估 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752365/

相关文章:

ruby-on-rails - 处理垃圾邮件发送者发送不需要的 POST 数据的最佳方法是什么?

php - $.post数据命名问题

单个 AJAX 请求的 .NET 和 IIS 超时

php - 在 html 表单中键入输入字符需要匹配 - jQuery?

java - 文件类中的新 BufferedReader 无法应用于给定类型

ruby-on-rails - 将 span 放入 f.submit

ruby-on-rails - Rails 3 : guides. ruby​​onrails.org 在 PDF 中?

json - 如何在 grails 3.1.10 restful 服务中从 request.JSON 中清理 html/javascript

c# - 从 Json 字符串中获取值

ruby-on-rails - Tire + Elasticsearch:如何搜索值范围?