如何在哈希上使用带有[]的should_receive?

时间:2014-01-04 17:01:47

标签: ruby rspec mocking

我想测试tags对象是否收到方法[:artist]

def artist
  @tagger.tags(@mp3)[:artist]
end

我正在尝试这样的事情。

tagger = double("tagger")
tags.tagger = tagger
tagger.stub(:tags) { Hash.new }
tagger.tags.stub(:[])

tagger.should_receive(:tags).with(mp3)
tagger.tags.should_receive('[:artist]')

tags.artist

这会导致语法错误,因为rspec尝试创建一个类似的方法:

def [:artist]

这是无效的语法。

有没有一种有效的方法可以做到这一点?

1 个答案:

答案 0 :(得分:4)

我没有对此进行过测试,但我似乎记得做过这样的事情:

tagger.tags.should_receive(:[]).with(:artist)

希望这有帮助

编辑:刚检查出来,我可以确认这是有效的。