测试以检查RSpec是否存在任何内容

时间:2013-09-19 15:55:00

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

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

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

但是有没有办法检查是否有什么东西在等等?

find(".blah").should have_some_content

3 个答案:

答案 0 :(得分:2)

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

尝试:

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

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

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

答案 1 :(得分:1)

看起来你正在使用Capybara。

我会像这样写

而不是相关的风格
page.should have_css('.bar', text: 'foo')

答案 2 :(得分:0)

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

  • 你知道它在那里,并且有些东西被归还
  • 你知道它不在那里,还有其他东西(可能nil?)被退回

然后编写测试以确认在您的情况下,存在该类的一些元素很容易。这只是知道.find方法的返回值与存在和未找到的东西之间的差异的问题。