【发布时间】:2017-10-23 15:12:58
【问题描述】:
在 Rails 4.2 上使用 Mocha。 我正在测试一种方法,它应该使用正确的参数调用另一个方法。这些参数是它从数据库调用的 ActiveRecord 对象。这是我的测试中的关键行:
UserMailer.expects(:prompt_champion).with(users(:emma), [[language, 31.days.ago]]).once
users(:emma) 和 language 都是 ActiveRecord 对象。
即使进行了正确的调用,测试也会失败,因为参数与预期不符。我认为这可能是因为每次从数据库中提取记录时它都是不同的 Ruby 对象。
我认为解决它的一种方法是查看我的代码中使用什么方法来提取记录并存根该方法以返回模拟,但我不想这样做,因为检索了一大堆记录然后过滤以找到正确的记录,模拟所有这些记录会使测试方式过于复杂。
有更好的方法吗?
【问题讨论】:
标签: ruby-on-rails unit-testing activerecord ruby-mocha