Я новичок в использовании RSpec и FactoryGirl.Я пытаюсь добавить тесты RSpec в существующую кодовую базу.
У меня определены следующие фабрики:
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 в моих тестах и назначить@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.'
Я могу создавать действующие фабрики пользователей (сами по себе) без проблем.Но когда я пытаюсь создать проекты, в которых есть пользовательская ассоциация, и указываю ассоциированного пользователя в качестве фабричного пользователя, которого я создал ранее, проверки этого пользователя не пройдены.Есть идеи, что мне здесь не хватает?
Большое спасибо,
Дин Ричардсон