Capybara click_button有效,但我如何评估JSON响应?

时间:2012-01-06 01:34:34

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

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。

1 个答案:

答案 0 :(得分:3)

您应该使用@javascript标记您的方案/功能,以便将其作为JavaScript功能运行:

@javascript
Scenario: Title goes here

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