我知道我可以按如下方式模拟对象:
Account.any_instance.expects(:type).returns("premium")
我记得听说这被认为是一种糟糕的做法。我喜欢做像
这样的事情user = users(:bob)
user.account.expects(:type).returns("premium")
但这似乎并没有模仿正确的对象。有没有比在课堂上使用any_instance
调用更好的解决方案?
修改:我收到的错误消息是
not all expectations were satisfied
unsatisfied expectations:
- expected exactly once, not yet invoked: #<Account:0x5f9f8f8>.type(any_parameters)
答案 0 :(得分:0)
我仍在寻找嘲笑的方法,但你尝试过类似的事情:
account = user.account
account.expects(:type).returns("premium")
让测试的上下文知道你想要模拟哪个对象会有所帮助。