Я новичок в FactoryGirl и пробую следующий простой сценарий?
factory :female, :class => Gender do
code 'Female'
end
factory :male, :class => Gender do
code 'Male'
end
factory :papas, :class => Customer do
first_name 'Jim'
last_name 'Papas'
association :gender, :factory => :male, :strategy => :build
end
factory :dumas, :class => Customer do
first_name 'Mary'
last_name 'Dumas'
association :gender, :factory => :female, :strategy => :build
end
Затем в моем тесте:
create(:male)
create(:female)
create(:papas)
create(:dumas)
Обратите внимание, что класс Customer имеет класс ассоциации own_to
Gender
и правило проверки, которое говорит, что должен присутствовать gender_id
. У меня также есть проверка класса Gender
на уникальность кода.
В операторе create(:papas)
выше в моем тесте я получаю сообщение об ошибке, что Customer
, который будет создан, недействителен, потому что гендерный_ид
равно nil
.
Если я уберу :strategy => :build
на Customer
:papas
связь factory с полом, то я получу ошибку, что при попытке создать :papas
, код пола уже существует.
Что мне нужно сделать, чтобы мои тесты создавали данные, как указано выше?
Обратите внимание, что я хочу, чтобы гендеры создавались без клиентов и в других тестах. Не говорите мне создавать клиентов с помощью команд factory create и позволять клиентам одновременно создавать пол. Это не сработает, если я попытаюсь создать двух клиентов одного пола.
Кроме того, должен быть лучший ответ, чем тот:
@male = create(:male)
@female = create(:female)
create(:papas, :gender => @male)
create(:dumas, :gender => @female)
(При использовании фикстур эти вещи были готовы из коробки. Вернуться к фикстурам?)