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

Don*_*cci 4 testing ruby-on-rails functional-testing

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

这是一条测试线

出现在我的页面上.

我试过用

assert_select "p" do
  assert_select "this is the test line"
end
Run Code Online (Sandbox Code Playgroud)

但我觉得这条线路有问题.

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

Is *_* Ma 10

没有指定标签:

assert_match "this is the test line", response.body
Run Code Online (Sandbox Code Playgroud)


T.J*_*uck 5

我认为你只是在寻找:

assert_select "p", "this is the test line"
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档assert_select

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

assert_select "p", /test line/
Run Code Online (Sandbox Code Playgroud)

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

  • 所以我找到了答案,我在 p 中添加了一个类,并在assert_select 中做了 p.class,然后“字符串”就像一个魅力一样工作。 (2认同)