Capybara / RSpec - тестирование для нескольких возможных результатов с have_content - PullRequest
9 голосов
/ 03 февраля 2012

Я новичок в тестировании, так что терпите меня:)

Я хотел бы проверить случайный контент на странице.Например, давайте протестируем страницу для отображения содержимого «foo» или «bar».

Что-то вроде приведенного ниже - это то, чего я пытаюсь достичь

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

Есть идеи?

Ответы [ 2 ]

10 голосов
/ 03 февраля 2012

Я не знаю ни одного готового к использованию Mather для вас. Но вы можете испечь свой собственный.

с использованием удовлетворить :

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/)

0 голосов
/ 25 января 2018

У меня был тот же вопрос, но я понял, что, вероятно, проще и более устойчиво добавить оператор 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

Надеюсь, это поможет с другой точки зрения. Самое простое решение - обычно лучшее.

...