为什么我找不到h1标签?

时间:2013-01-25 09:16:04

标签: ruby rspec capybara

这是我的测试:

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 ??

1 个答案:

答案 0 :(得分:1)

您不能对来自getpost等请求方法的响应使用capybara匹配器。对于水豚匹配器,您必须使用visit,如{{1} }}

有关详细信息,请参阅this post。特别是这句话:

  

作为验收测试框架的Capybara不会暴露像请求或响应对象这样的低级细节。为了使用Capybara访问网页,开发人员需要使用方法访问(而不是get)。要读取访问的页面正文,开发人员必须使用页面而不是操作响应。

另见帖子:Check page response on multiple pages with Capybara

如果要测试HTML字符串响应的结构,可以考虑rspec-html-matchers