正则表达式(子字符串)的测试发生在字符串数组中的任何项目中的任何位置

时间:2011-12-25 11:14:31

标签: ruby-on-rails-3 rspec

我的规范想要测试某个子字符串是否与字符串数组的任何条目一起出现。

p @banner.errors.messages[:base] #=> ["Specify a leader text or an image, not both"]

我的所有规范都非常想知道,“不是两个”字符串是否出现在那里的任何数组项中。

 @banner.errors.messages[:base].should include(/not both/)

失败,因为"not both"

中未包含["Specify a leader text or an image, not both"]

注意:当我对文字字符串进行测试时(应该包括(“指定...两者”),事情就可以了。但这对我来说似乎很脏。这些面向用户的文本对于测试通过并不重要;并且此类文本将更改:每次更改错误消息时,我都需要更新我的测试。

1 个答案:

答案 0 :(得分:3)

也许是这样的?

@banner.errors.messages[:base].join.should match(/not both/)

但请注意,有一个边缘情况,匹配可能超过两行或更多行,例如以“not”结尾的行,下一行是“both”。