如果存在两个字符串中的任何一个,则置位

时间:2017-12-05 00:42:38

标签: ruby-on-rails ruby capybara

根据一天中的时间,我有一个包含两个不同字符串的网页 - “美好的一天”或“晚安”。

有没有办法做某种assert_content(my_string)检查是否存在两个给定字符串中的一个?

哪一个存在并不重要,只有一个存在。

2 个答案:

答案 0 :(得分:3)

如果使用MiniTest,则可以使用assert_match

assert_match /Good day|Good night/, string

如果使用RSpec,则可以使用match

expect(string).to match /Good day|Good night/

答案 1 :(得分:2)

虽然Sebastian的答案只要在您去检查时加载页面就会起作用,但它会失去Capybaras等待/重试行为,并且如果用于在页面更改时检查内容,则会导致片状测试(立即点击按钮后等)。

使用minitest时,更好的解决方案是继续使用Capybara提供的assert_content匹配器,但将其传递给正则表达式

assert_content(/Good day|Good night/)

如果使用RSpec,您可以执行相同的操作

expect(page).to have_content(/Good day|Good night/)

或者您可以以更具可读性的方式编写

expect(page).to have_content('Good day').or(have_content('Good night'))