如何检查rails功能测试中是否显示文本?

时间:2013-07-01 20:06:14

标签: ruby-on-rails testing functional-testing

我目前正在为我的控制器编写功能测试,我想检查是否有线路

这是一个测试线

出现在我的页面上。

我尝试使用

assert_select "p" do
  assert_select "this is the test line"
end

但我认为这条线有问题。

在rails 3版本中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

不指定标签:

assert_match "this is the test line", response.body

答案 1 :(得分:4)

我认为你只是在寻找:

assert_select "p", "this is the test line"

有关assert_select的详细信息,请参阅the docs

请注意,上面的行取决于<p>标记中包含的文本,并且是文字匹配。如果它在另一个标签中,您需要指定正确的选择器。如果你想匹配正则表达式,也支持,通过:

assert_select "p", /test line/

请注意,这不会非常高效,因为它会扫描文档中的所有 <p>。考虑一个更严格指定的选择器,例如您要定位的元素上的类或ID。

答案 2 :(得分:0)

这适用于导轨6:

assert_selector "p", text: "this is the test line"

doc:https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Matchers

(我得到Unused parameters passed to Capybara::Queries::SelectorQuery