【发布时间】:2017-12-11 05:00:10
【问题描述】:
如何使用 FactoryGirl 为 User.find_user_id 类方法编写测试?
Class User < ActiveRecord::Base
def self.find_user_id (name)
result = User.find_or_create_by(name: name)
return result.id
end
end
编辑:我第一次没有说清楚。我在测试中想要的只是当我调用User.find_user_id 时,User.find_or_create_by 被击中。
我使用了expect(User).to received(:find_or_create_by),但这会使result = nil 和返回语句return result.id 将导致undefined method 'id' for nil:NilClass 的错误。我正在考虑使用 FactoryGirl 创建一条新记录,这样我就不会收到此错误消息。但我不确定这是否是正确的方法,因为我是 RSpec/Rails 的新手
【问题讨论】:
-
你应该先弄清楚你想测试什么。在您的情况下,如果您想测试是否创建了新记录,那么您应该考虑
how to test the changes of database。如果您想测试从该方法返回的内容,请换一种方式思考。在开始新问题之前参考factory-bot的文档+google。 -
你为什么要测试
FactoryBot(以前的FactoryGirl)是否有效?他们有自己的测试。问题的标题与正文不一致,因为您实际上是在询问如何测试您的User#find_user_id方法,这与FactoryBot完全无关
标签: ruby-on-rails ruby rspec factory-bot