Rspec存根类的数组

时间:2014-05-06 02:14:02

标签: ruby rspec rspec2

我有一个这样定义的循环:

 api.release(release_url).rels[:assets].get.data.each do |existing_file|
   log "Already Contains: #{existing_file.name}"
 end

如何存根existing_file.name?我希望它也给它多个值。

我试图像这样存根:

      provider.api.release.rels[:assets].get.stub(:data).and_return([{ :name => "foo.bar"}, { :name => "bar.foo"])

但是这会返回错误:undefined method 'name' for Hash。这让我觉得我正在迭代一系列类。关于如何存根的任何建议?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

使用double - 你应该这样做:

provider.api.release.rels[:assets].get.stub(:data).and_return(
  [double(:name => "foo.bar"), double(:name => "bar.foo")]
)

答案 1 :(得分:1)

试试这个:

创建一个帮助类,让我们称之为Clazz,并使用它而不是哈希。

class Clazz < Struct.new(:name); end;

provider.api.release.rels[:assets].get.stub(:data).and_return([Clazz.new("name1"), Clazz.new("name2")])

现在您可以使用name作为方法。