如何模拟Rails中的关联对象?

时间:2014-10-08 14:11:05

标签: ruby-on-rails ruby unit-testing mocha

我知道我可以按如下方式模拟对象:

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)

1 个答案:

答案 0 :(得分:0)

我仍在寻找嘲笑的方法,但你尝试过类似的事情:

account = user.account
account.expects(:type).returns("premium")

让测试的上下文知道你想要模拟哪个对象会有所帮助。