Создание тестовых объектов в RSpec с FactoryGirl завершается неудачно с вложенными атрибутами - PullRequest
2 голосов
/ 21 июля 2011

У меня есть модель Workout, в которой есть много PerformedExercises, в которых много PeformedSets.Я не могу заставить его построить объект в моем тесте, и я не уверен, что это SQLite3 или что-то еще (он отлично работает вне среды тестирования).

У меня есть следующие фабрики:

FactoryGirl.define do
 factory :workout do
   title    'workout one'
   performed_exercise
 end

 factory :performed_exercise do
  exercise_id       '2'
  performed_set
 end

 factory :performed_set do
  set_number        '1'
 end
end

Мой тест RSpec выглядит так (я сделал его очень простым, чтобы исключить любые другие проблемы внутри теста):

it "is causing me to lose hair" do
  wrkt = FactoryGirl.build(:workout)
end

Когда я запускаю тест, яполучите следующее сообщение об ошибке:

Failure/Error: wrkt = FactoryGirl.build(:workout)
     ActiveRecord::StatementInvalid:
       SQLite3::ConstraintException: constraint failed: 
        INSERT INTO "performed_sets" ("created_at", "notes", "performed_exercise_id", "reps", "set_number", "updated_at", "weight") 
        VALUES (?, ?, ?, ?, ?, ?, ?)

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 18 октября 2011

Не устанавливайте идентификатор упражнения.Позвольте SQLite обрабатывать идентификаторы для вас.

factory :performed_exercise do
  performed_set
end
...