-1

这是我的测试:

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 ?

4

1 回答 1

1

您不能对从 , 等请求方法获得的响应使用 capybara 匹配器getpost对于 capybara 匹配器,您必须使用visit,如visit 'home'.

有关详细信息,请参阅此帖子。尤其是这句话:

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

另请参阅这篇文章:使用 Capybara 检查多个页面上的页面响应

If you want to test the structure of an HTML string response, you might consider rspec-html-matchers.

于 2013-01-25T09:42:16.690 回答