Minitest/Mocha 嵌套存根
Minitest/Mocha nested stub
我想存根一个函数,returns 另一个存根使用 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 do
(byebug) @instance
nil
我阅读了 here 关于使用 mock 而不是 stub 的内容,但这也不起作用。
我不明白为什么 @instance 在 do 块 中为 nil,因为它是先前定义的。
显然正在调查中。 source
目前,我可以通过简单地使用 'instance' 而不是“@instance”来修复它。
我想存根一个函数,returns 另一个存根使用 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 do
(byebug) @instance
nil
我阅读了 here 关于使用 mock 而不是 stub 的内容,但这也不起作用。
我不明白为什么 @instance 在 do 块 中为 nil,因为它是先前定义的。
显然正在调查中。 source
目前,我可以通过简单地使用 'instance' 而不是“@instance”来修复它。