RSpecとFactoryGirlを初めて使用しました。私はRSpecテストを既存のコードベースに追加しようとしています。RSpecでFactoryGirlを使用する場合、関連する工場での検証エラー
私が定義されている以下の工場があります。私はしかし、私のテストでは、プロジェクトの工場を作成し、@projectするためにそれを割り当てるしようとすると
Factory.sequence :email do |n|
"somebody#{n}@example.com"
end
Factory.sequence :login do |n|
"inquire#{n}"
end
Factory.define :user do |f|
f.login { Factory.next(:login) }
f.email { Factory.next(:email) }
f.password 'inquire_pass'
f.password_confirmation 'inquire_pass'
f.first_name 'test'
f.last_name 'guy'
f.newsletter true
f.notify_of_events true
f.terms_of_service true
end
Factory.define :project do |project|
project.title "Example Project Title"
project.association :user
project.association :provider
project.association :project_request
project.association :offering
project.association :offering_type
end
を:
require 'spec_helper'
describe Charge do
before(:each) do
@provider_user = Factory(:user)
@provider = stub_model(Provider, :user => @provider_user)
@user = Factory(:user)
@project_request = stub_model(ProjectRequest)
@project = Factory(:project, :user => @user, :provider => @provider, :offering_fixed_fee_number => 700,
:project_request_id => @project_request.id)
@attr = {
:user_id => @user.id,
:provider_id => @provider.id,
:charge_client => "0.01"
}
@charge = @project.build_charge(@attr)
end
私はエラーメッセージが表示されます関連付けられたユーザーの検証が失敗したことを示すテストを実行する場合:
Validation failed: User email can't be blank, User email is too short (minimum is 3 characters), User email does not look like a valid email address., Login can't be blank
ユーザーモデルに関する関連する検証は次のとおりです。
validates_presence_of :login, :email
validates_uniqueness_of :login, :email, :case_sensitive => false
validates_length_of :login, :within => 5..20
validates_format_of :login, :with => /^[a-z0-9-]+$/i, :message => 'may only contain letters, numbers or a hyphen.'
validates_length_of :email, :within => 3..100
validates_format_of :email, :with => Authentication.email_regex, :message => 'does not look like a valid email address.'
問題なく有効なユーザーファクトリ(それ自体で)を作成できます。しかし、私がUserアソシエーションを持つプロジェクトを作成しようとしたとき、以前作成した工場ユーザーとして関連付けられたUserを指定すると、そのユーザーの検証は失敗します。私がここで紛失しているアイデアは何ですか? association
方法でfactory
paramは欠落しているため、
おかげで非常に多く、
ディーン・リチャードソン