【问题标题】:What is the capybara equivalent for Minitest's assert_select?Minitest 的 assert_select 的水豚等价物是什么?
【发布时间】:2015-03-19 10:40:02
【问题描述】:

我对测试很陌生,所以如果我的方法有误,请随时纠正我。

我正在使用 Minitest 测试 Rails4 应用程序。由于我在许多页面中都包含 JS,因此我正在使用 Capybara 在我的测试中使用 JS 驱动程序,并且还能够触发 JS 事件并测试预期结果。我的困惑从这里开始,因为有很多方法可以包含 Capybara。

此外,我发现“正常”的断言样式语法不适用于 Capybara。在这里,我的困惑达到顶峰。在我的研究中,我发现 Capybara 有一个 Spec-style DSL 以及其他一些。 现在我使用 gem 'minitest-rails-capybara' (Github),并尝试使用此列表中的方法/DSL:RubyDoc

我尝试替换一个测试 HTML 元素的简单断言。

之前:assert_select "title", "Study | Word Up"

现在:page.has_selector?('title', :text => "Study | Word Up")

但无论我测试什么,测试总是通过。这怎么可能?我检查了服务器日志,看看我是否在正确的页面上。但是一切似乎都很好,通过测试没有意义。

【问题讨论】:

    标签: javascript ruby-on-rails ruby capybara minitest


    【解决方案1】:

    你需要使用Capybara的assert_selector

    assert_selector "title", text: "Study | Word Up"
    

    如果您尝试从头元素而不是正文断言文档的标题,那么您需要使用assert_title

    assert_title "Study | Word Up"
    

    【讨论】:

    • 谢谢,assert_title 正是我要找的。​​span>
    • @blowmage 除了<head> 中的那个,还有其他的标题吗?
    【解决方案2】:

    你需要使用assert

    assert page.has_selector?('title', :text => "Study | Word Up")
    

    has_selector? 返回一个布尔值,你需要检查这个布尔值。

    【讨论】:

    • 很高兴知道,但遗憾的是现在测试失败了它也应该通过:Minitest::Assertion: Failed assertion, no message given.
    • 我发现了has_selector?方法仅适用于用户可见的元素。所以这可能就是我的方法不起作用的原因。
    • 也许assert page.has_selector?('title', :text => "Study | Word Up", visible: :all), "My own message" 可以解决它。
    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 2014-05-08
    • 2018-07-10
    • 2023-04-10
    • 2011-01-19
    • 2010-12-07
    相关资源
    最近更新 更多