【问题标题】:How to check if text appears on page in rails functional test?如何在rails功能测试中检查文本是否出现在页面上?
【发布时间】:2013-07-01 20:06:14
【问题描述】:

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

这是一条测试线

出现在我的页面上。

我尝试过使用

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

但我认为这条线有问题。

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

【问题讨论】:

  • 请不要不断更新问题中的代码——这会使问答格式分崩离析。

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


【解决方案1】:

不指定标签:

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

【讨论】:

    【解决方案2】:

    我想你只是在寻找:

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

    有关assert_select 的更多信息,请参阅the docs。

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

    assert_select "p", /test line/
    

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

    【讨论】:

    • 我想我的问题是这个 p 在一堆 div 里面,例如

      这是一条测试线

      。这是否意味着我必须在标签中指定?喜欢 div.div.div.p 吗?
    • 所以我找到了答案,我在 p 中添加了一个类,并且在 assert_select 中做了 p.class,然后“字符串”就像一个魅力。
    【解决方案3】:

    这适用于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)

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多