我正在尝试测试为应用程序创建的模型,它与其他两个模型相关联,也使用Factory Bot来构建测试,但是它无法识别,错误返回为:{{1 }}
我正在使用Ruby 2.6.1,Rails 5.2.3,FactoryBot 5.0.2,Rspec 3.8运行该应用程序。我尝试了定义枚举的不同方法。我不知道该怎么办。
型号:
Failure/Error: status :pending //// NoMethodError: undefined method 'status' in 'pending' factory.
工厂:
class CollegeWhitelist < ApplicationRecord
enum status: {pending: 0, approved: 1, rejected: 2}
has_many :users
has_many :colleges
end
Rspec:
FactoryBot.define do
factory :college_whitelist do
association :user
association :college
trait :pending do
status :pending
end
trait :approved do
status :approved
end
trait :rejected do
status :rejected
end
end
end
我希望它首先通过打印对象即可通过测试。
答案 0 :(得分:1)
这是命名冲突的问题。
您必须将status
列的值用大括号括起来,否则它将自称:
FactoryBot.define do
factory :college_whitelist do
...
trait :pending do
status { :pending }
end
trait :approved do
status { :approved }
end
trait :rejected do
status { :rejected }
end
end
end