如何在rspec中模拟从客户端返回的实例变量

时间:2018-11-14 19:37:44

标签: ruby-on-rails ruby rspec rubygems instance-variables

我有一个服务客户端,该客户端返回一堆实例变量。我在另一个方法中调用此方法以返回响应

我希望我的方法像这样返回一个特定的

def returnsAlias
  model = ClientGem.find(id) #finds a bunch of instance variables by id
  model.alias #returns @alias
end

我认为我有

allow(ClientGem).to receive(:find).and_return('Test Alias')

我不确定用什么代替“测试别名”。我尝试了@alias并使用

@alias.instance_variable_set(:@alias, 'Test Alias')

但这会返回此错误

FrozenError:
   can't modify frozen NilClass

1 个答案:

答案 0 :(得分:0)

只需将对象本身存根即可。

model = instance_double(ClientGemReturnedKlass, alias: 'Test Alias')
allow(ClientGem).to receive(:find).and_return(model)