我在运行user_controller_spec.rb时收到此错误
Failure/Error: login_member
ActiveRecord::RecordInvalid:
Validation failed: User tag list You need to provide at least 5 interests
以下代码导致我的测试失败。更具体地说,该行" login_member"
在user_controller_spec.rb
中 before(:example) do
login_member
@user = @member.user
@another_user = create(:another_user)
end
这是我的工厂设置。您可以看到使用成员
创建用户Factories.rb
factory :member do
email { Faker::Internet.email }
password 'fidelio'
password_confirmation 'fidelio'
confirmed_at Time.now
association :user
end
factory :user do
first_name "Simon"
last_name "Walsh"
country "GB"
tag_list = "Sarcoidosis, Clinical trials, Emphysema, Bronchitis, Idiopathic pulmonary fibrosis"
end
以下助手记录成员
在spec_helpers.rb
中def login_member
@request.env["devise.mapping"] = Devise.mappings[:member]
@member = create (:member)
sign_in @member
end
这是我的用户类中的验证代码。我只在更新时指定了它。
在user.rb
中 validate :check_minimum_tags, on: :update
def check_minimum_tags
errors.add(:tag_list, 'You need to provide at least 5 interests') unless tag_list.count > 4
end
我不确定
为什么会因为创建关联用户而不是更新错误而引发错误
为什么要提升它......你可以看到我在" tag_list"中指定了5个兴趣点。 (使用带有标记宝石的行为)
我也尝试使用兴趣数组而不是字符串
答案 0 :(得分:0)
答案发现.....我工厂的语法错误。
应该是
factory :user do
first_name "Simon"
last_name "Walsh"
country "GB"
tag_list "Sarcoidosis, Clinical trials, Emphysema, Bronchitis, Idiopathic pulmonary fibrosis"
end
白痴