0

我正在使用 rspec 和 capybara,并且想测试我响应的 JSON 响应,例如 click_button。我知道我可以使用 :js => true 但我想解析我得到的 JSON。我看到我可以做类似的事情:

get '/your/path', format: 'js'

有没有办法做类似的事情:

click_button('Save', format: 'js')
::JSON.parse(response)....

?

谢谢

4

1 回答 1

3

像 Selenium 这样的浏览器模拟库的目的是接近真实的浏览器并允许模拟真实用户的行为。真实用户无法读取对 AJAX 操作的响应,因此浏览器仿真库不提供这种能力。Selenium 的人也很难实现它。

您有几种可能性:

  • 使用http 客户端库之一编写此测试。但是你不能使用这种方法真正测试涉及大量 Javascript 和 AJAX 的端到端的东西
  • AJAX 操作很可能会更改应用程序的 DOM 中的某些内容。您可以使用 Capybara 轻松为它写一张支票。
  • 但是,如果真的想端到端测试您的应用程序并想直接检查对 AJAX 操作的 HTTP 响应,您应该使用将记录所有响应的代理。然后你通过这些响应进行搜索。Selenium 维护者建议使用Browsermob 代理来做这样的事情这是由 Selenium 的 Ruby 绑定的维护者编写的 Ruby 绑定
于 2013-06-11T21:57:11.543 回答