Capybara / RSpec - 使用has_content测试多种可能的结果

时间:2012-02-02 21:06:23

标签: rspec capybara

我是新手测试,所以忍受我:)

我想在网页上测试随机内容。例如,让我们测试页面以显示内容'foo'或'bar'。

以下是我正在努力实现的目标

page.should (have_content('foo') || have_content('bar'))

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

我不知道是否准备好为您使用Mather。但你可以自己烤。

使用satisfy

page.should satisfy {|page| page.has_content?('foo') or page.has_content?('bar')}

simple_matcher

def have_foo_or_bar
  simple_matcher("check content has foo or bar") { |page| page.has_content?('foo') or page.has_content?('bar') }
end

describe page
  it "should have foo or bar" do
    page.should have_foo_or_bar
  end
end

修改: has_content接受正则表达式,因此您可以检查page.should have_content(/foo|bar/)

答案 1 :(得分:0)

我有同样的问题,但意识到它可能更容易&更灵活地在您的规范中添加if语句。

it 'can complete my incredible form' do
  visit '/testing_path'
  #...dostuff...

  if object_im_testing.contains_my_condition?
    current_path.should eq('/special_condition_url')
  else
    current_path.should eq('/normal_condition_url')
  end
end

希望这有助于提供另一种观点。最简单的解决方案通常是最好的。