1
我是使用RSpec和FactoryGirl的新手。我正在嘗試將RSpec測試添加到現有的代碼庫中。當RSpec使用FactoryGirl時關聯工廠的驗證錯誤
我有以下定義工廠:
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
當我嘗試但創建在我的測試項目的工廠,並將其分配給@project:
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.'
我能夠(通過本身),沒有問題,創建有效的用戶工廠。但是,當我嘗試創建具有用戶關聯的項目,並將關聯的用戶指定爲我之前創建的工廠用戶時,該用戶的驗證失敗。任何想法,我在這裏失蹤?
非常感謝,
院長理查森