Ruby 如何在散列上使用should_receive with[]呢?

Ruby 如何在散列上使用should_receive with[]呢?,ruby,rspec,mocking,Ruby,Rspec,Mocking,我想测试标记对象是否接收方法[: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]

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]
这是无效的语法


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

我还没有测试过,但我似乎记得我做过这样的事情:

tagger.tags.should_receive(:[]).with(:artist)
希望这有帮助


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

我还没有测试过,但我似乎记得做过这样的事情:

tagger.tags.should_receive(:[]).with(:artist)
希望这有帮助

编辑:刚刚签出,我可以确认这是有效的