列挙ステータスフィールドに誤った値を与える:FactoryGirlは、私がClient.rbモデルのFactoryGirl工場を建設しようとしています
Client.rb
enum status: [ :unregistered, :registered ]
has_many :quotation_requests
#Validations
validates :first_name,
presence: true,
length: {minimum: 2}
validates :last_name,
presence: true,
length: {minimum: 2}
validates :email, email: true
validates :status, presence: true
を工場出荷時:
FactoryGirl.define do
factory :client do
first_name "Peter"
last_name "Johnson"
sequence(:email) { |n| "peterjohnson#{n}@example.com" }
password "somepassword"
status "unregistered"
end
end
client_spec .rb
require 'rails_helper'
RSpec.describe Client, type: :model do
describe 'factory' do
it "has a valid factory" do
expect(FactoryGirl.build(:client).to be_valid
end
end
end
次のエラーが表示されます。
1) Client factory has a valid factory
Failure/Error: expect(FactoryGirl.build(:client, status: 'unregistered')).to be_valid
expected #<Client id: nil, email: "[email protected]", encrypted_password: "$2a$04$urndfdXNfKVqYB5t3kERZ.c.DUitIVXEZ6f19FNYZ2C...", first_name: "Peter", last_name: "Johnson", status: "0", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil> to be valid, but got errors: Status can't be blank
エラーはステータスを空白にすることはできません。
工場がステータス属性に値を明確に割り当てているので、これがどのように可能であるかわかりません。
このファクトリで有効なクライアントオブジェクトを構築するにはどうすればよいですか?
はfactory_girl 4.7.0 使用factory_girl_railsを使用して4.2 をRailsの4.7.0
let(:client)を使用するようにコードを変更しましたが、何も変更されませんでした。私はクライアントを作成していませんが、工場が有効なクライアントを構築することをテストするビルドです。そうすれば、他のテストのために工場を正確に使うことができます。私はステータスを試しました:未登録とステータス0#:未登録です。割り当て済みのステータスが表示されても、「ステータスは空白にできません」というエラーメッセージが表示されます。 – chell