Minitest / Mocha嵌套存根

最后发布: 2016-11-24 20:23:26


问题

我想在Minitest上使用Mocha存根返回另一个存根的函数。 这是代码

@instance = stub('instance') do
      stubs(:destroy).returns(true)
      stubs(:id).returns(0)
end
find_by_id = stub do 
      stubs(:find_by_id).returns(nil) #default
      stubs(:find_by_id).with(@instance.id).returns(@instance)
    end 
@user.stubs(:instances).returns(find_by_id)

当我使用byebug运行代码时,定义了@instance:

(byebug) @instance
#<Mock:instance>

但是,在find_by_id = stub内部

(byebug) @instance
nil

在这里阅读有关使用模拟代替存根的信息,但这也不起作用。

我不明白为什么@instance在do块内为nil,因为它是先前定义的。

ruby-on-rails mocking minitest stub
回答

显然正在调查中。 资源

现在,我可以通过使用“实例”而不是“ @instance”来修复它。