如何模仿Capybara / Poltergeist的回应

时间:2018-01-23 03:00:03

标签: ruby-on-rails capybara

我有使用Ruby,Capybara和Poltergeist的抓取脚本。代码现在正常工作我想为我的代码添加rspec。当代码单击特定按钮并转到其他页面时,如何存根响应?

这是我的示例代码

Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :timeout => 1000 })
Capybara.default_selector = :xpath
session = Capybara::Session.new(:poltergeist)
session.driver.headers = { 'User-Agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X)" }

session.visit "https://sample.url"

# set ID
id = session.find("//input[@name='identifier']")
id.native.send_key('id')

# set password
password = session.find("//input[@name='password']")
password.native.send_key('pass')

# login
submit = session.find("//input[@value='submit']")
submit.trigger('click')

html = session.html

# Then parse html 

基本上我想在rspec中存根html但不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

简短回答 - 你没有

更长的答案 - Capybara专为编写功能测试而设计,这是您的应用程序的端到端测试,在此期间您不应该嘲笑/存储任何应用程序。此外,如果您随后存根响应,那么与页面进行交互的重点是什么,因为交互是没有意义的? (对于您真正关心网站工作的测试中的任何内容,您通常也不应该调用.native.trigger

听起来好像你想写一个请求规范或查看规范(不要使用Capybara与页面进行交互)。

在旁注中,如果/当您使用带有xpath的Capybara(您当前的选择器实际上会更好地作为CSS)时,您需要了解// vs .//陷阱并默认为使用.// 99.99%的时间 - https://github.com/teamcapybara/capybara#beware-the-xpath--trap