6

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

这是一条测试线

出现在我的页面上。

我尝试使用

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

但我认为这条线有问题。

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

4

3 回答 3

14

不指定标签:

assert_match "this is the test line", response.body
于 2017-10-05T23:43:15.590 回答
5

我想你只是在寻找:

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

有关. _ _assert_select

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

assert_select "p", /test line/

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

于 2013-07-01T20:11:56.763 回答
0

这适用于rails 6:

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

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

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

于 2019-05-04T14:13:55.060 回答