在我的 Rails 应用程序中,我有一个模型
Profile
belongs_to
User
如下:
class User < ApplicationRecord
has_many :profiles
end
class Profile < ApplicationRecord
belongs_to :user
validates :user_id, presence: true
end
Profile的工厂如下:
FactoryBot.define do
factory :profile do
sequence(:name) { |n| "Profile #{n}" }
association :user
end
end
现在模型测试中的这个测试失败了:
it 'should have a valid factory' do
expect(build(:profile)).to be_valid
end
这里我不确定哪一部分是错误的。是否测试
user_id
的存在。验证器应该不同吗?或者我应该在配置文件之前创建一个用户。这似乎也不正确,因为这是一个错误的测试,因为工厂应该这样做。
我做错了什么?
您的测试应该测试应用程序的行为而不是工厂的行为。
如果您想健全性测试您的工厂是否生成有效记录,您可以通过检查您的工厂来实现。这很简单:
FactoryBot.lint
此步骤通常包含在引导测试套件中。
自 2018 年 Rails 5 发布以来,belongs_to
还默认添加了验证。