=〜expect语法的rspec错误不支持运算符匹配器

时间:2013-11-11 15:34:56

标签: rspec

获得

The expect syntax does not support operator matchers, 
so you must pass a matcher to `#to`.

对于

的代码
class_methods.all.should =~ [:bar, :hello]

我想改为

expect(class_methods.all).to =~ [:bar, :hello]

我也试过

expect(class_methods.all).to match [:bar, :hello]

expect(class_methods.all).to match ([:bar, :hello])

expect(class_methods.all match([:bar, :hello])).to be_true
# this one gives wrong number of arguments

3 个答案:

答案 0 :(得分:4)

我认为数组的=~替换为match_array

expect(class_methods.all).to match_array [:bar, :hello]

答案 1 :(得分:1)

你可以尝试:

subject { class_methods.all }

it { should match_array [:bar, :hello] }

答案 2 :(得分:0)

并且要明确,按https://www.relishapp.com/rspec/rspec-expectations/v/3-0/docs/built-in-matchers,新的expect语法支持各种比较运算符(例如<<=等)使用be时,它不支持=~==match方法替换=~表示字符串和正则表达式,match_array处理数组的特殊情况(根据其他答案)。