rspec match_array为空数组失败?

时间:2014-02-11 16:30:58

标签: rspec

我不能使用match_array在我的一个测试中再次匹配一个空数组。我有以下消息:

Failure/Error: expect(subject.custom_text_locations).to be match_array([])

   expected #<RSpec::Matchers::BuiltIn::MatchArray:105810100> => #<RSpec::Matchers::BuiltIn::MatchArray:0xc9d1168 @expected=[]>
        got #<Array:105810180> => []

这是我的测试:

context 'when there is no custom text locations' do
  subject { create(:service, custom_text_locations: nil) }
  it 'returns empty list' do
    expect(subject.custom_text_locations).to match_array([])
  end 
end 

如果我按match_array([])更改be_empty,我的代码就可以了。另外,正如@PeterAlfvin指出的那样,将custom_text_locations主题的[]初始化更改为def custom_text_locations self[:custom_text_locations] || [] end 似乎有效。

这是我的方法:

{{1}}

问题:我的测试有什么问题?

1 个答案:

答案 0 :(得分:13)

您发布的代码不是生成您发布的错误的代码。

您发布的错误包含错误的to be match_array([]),这与您发布的代码中的正确to match_array([])非常不同。