这是我的测试:
require "rspec"
describe HomeController do
render_views
it "should renders the home" do
get :home
response.should render_template("home")
find('H1').should have_content("Simulate Circuits Online")
end
end
但我明白了:
1) HomeController should renders the home
Failure/Error: find('H1').should have_content("Simulate Circuits Online")
Capybara::ElementNotFound:
Unable to find css "H1"
# ./spec/controllers/home_controller_spec.rb:9:in `block (2 levels) in <top (required)>'
# (eval):6:in `block in fork'
如何查找标签,ID或CSS ??
答案 0 :(得分:1)
您不能对来自get
,post
等请求方法的响应使用capybara匹配器。对于水豚匹配器,您必须使用visit
,如{{1} }}
有关详细信息,请参阅this post。特别是这句话:
作为验收测试框架的Capybara不会暴露像请求或响应对象这样的低级细节。为了使用Capybara访问网页,开发人员需要使用方法访问(而不是get)。要读取访问的页面正文,开发人员必须使用页面而不是操作响应。
另见帖子:Check page response on multiple pages with Capybara
如果要测试HTML字符串响应的结构,可以考虑rspec-html-matchers。