【问题标题】:Test to check if any content is there with RSpec测试以检查 RSpec 是否有任何内容
【发布时间】:2013-09-19 15:54:59
【问题描述】:

所以你可以进行这样的测试:

find(".blah").should have_content("blah blah")

但是有没有办法检查是否有东西在 blah 中?

find(".blah").should have_some_content

【问题讨论】:

    标签: ruby-on-rails-3 rspec capybara shoulda


    【解决方案1】:

    我不相信有你想要的 Capybara::RSpecMatchers。但是,您可以使用底层的 Capybara::Node::Matchers。

    试试:

    find(".blah").has_no_text?.should be_true
    

    如果你真的想使用 Capybara::RSpecMatchers,你可以使用 have_content 和一个寻找任何非空白字符的正则表达式。

    find(".blah").should have_content(/[^\s]/)
    

    【讨论】:

    • has_no_text?正是我要找的
    【解决方案2】:

    看起来你正在使用 Capybara。

    代替有问题的样式,我会这样写

    page.should have_css('.bar', text: 'foo')
    

    【讨论】:

      【解决方案3】:

      我会检查find(".blah")的返回值,看看它在以下两种情况下是什么:

      • 你知道它就在那里,并且返回了一些东西
      • 您知道它不存在并且返回了其他内容(可能是 nil?)

      然后编写测试只是为了确认,在您的情况下,存在该类的某些元素很容易。只需要知道有什么和没有找到什么时.find方法的返回值之间的区别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 2013-05-11
        • 2011-02-07
        • 2011-05-22
        相关资源
        最近更新 更多