Я пытаюсь написать тест Rspec, чтобы оценить валидацию модели, чтобы не дать члену спортзала сделать повторную встречу (т. Е. Планировать одно и то же время в тот же день с тренером по фитнесу). У меня есть код работает как ожидалось в моем приложении, но я застрял на том, как написать эффективный тест для сценария.Неудача Rspec-теста объекта FactoryGirl
На две из моих моделей влияет данный тест: во-первых, есть модель назначения, которая принадлежит членам и тренерам. Во-вторых, есть модель участника, которая состоит из информации профиля о спортзале. Существует также модель тренера, но сейчас я просто сосредоточен на получении рабочей спецификации для сценария «член не может иметь дублированную встречу». Я использую камень FactoryGirl для создания тестовых данных.
Вот что я написал для теста «Назначение» RSpec:
it "is invalid when a member has a duplicate appointment_date" do
FactoryGirl.create(:appointment, appointment_date: "2015-12-02 00:09:00")
appointment = FactoryGirl.build(:appointment, appointment_date: "2015-12-02 00:09:00")
appointment.valid?
expect(appointment.errors[:member]).to include('has already been taken')
end
Моя модель Назначения содержит следующее:
belongs_to :member
belongs_to :trainer
validates :member, uniqueness: {scope: :appointment_date}
validates :trainer, uniqueness: {scope: :appointment_date}
Я создал следующие заводы для назначения и члена :
FactoryGirl.define do
factory :appointment do
appointment_date "2015-01-02 00:08:00"
duration 30
member
trainer
end
end
FactoryGirl.define do
factory :member do
first_name "Joe"
last_name "Enthusiast"
age 29
height 72
weight 190
goal "fffff" * 5
start_date "2014-12-03"
end
end
Примечание: У меня также есть завод по производству тренажеров.
Когда я запускаю тест RSpec, он генерирует следующее сообщение об ошибке:
Failure/Error: appointment = FactoryGirl.build(:appointment, appointment_date: "2015-12-02 00:09:00")
ActiveRecord::RecordInvalid:
Validation failed: First name has already been taken, Last name has already been taken
Оказывается Rspec имеет проблемы со вторым объектом FactoryGirl, что я пытаюсь построить, но я не понимаю, что мне нужно для устранения проблемы. Я новичок в Rails, и буду благодарен за любые советы, предложения или мысли о том, как действовать.
Большое вам спасибо! Ваши рекомендуемые изменения кода сделали трюк. Мой тест Rspec теперь зеленый, и мой код приложения работает так, как ожидалось. Кстати, вы были правы, полагая, что я проверяю уникальность первых и последних имен членов. Тест Rspec собирал эту ссылку из моей модели-члена. Еще раз спасибо! – codeinspired