Какая цель Factory Girl в тестах rspec, когда я мог использовать before(:each)
блоков? Похоже, что единственная разница между Factory Girl и before(:each)
состоит в том, что фабрика подготавливает создание объекта вне теста. Это правильно?
Фабрика - в чем цель?
Ответы (3)
Такие драгоценные камни, как Factory Girl и Sham. позволяют создавать шаблоны для допустимых и повторно используемых объектов. Они были созданы в ответ на фикстуры, которые фиксировали записи, которые необходимо было загрузить в базу данных. Они позволяют больше настраивать при создании экземпляров объектов, и их цель - убедиться, что у вас есть допустимый объект для работы. Их можно использовать где угодно в ваших тестах, а также в ваших тестовых хуках до и после.
before (: each), before (: all), after (: each) и after (: all) - все они нацелены на то, чтобы дать вам место для настройки и разборки, которые будут разделены между тестовой группой. Например, если вы собираетесь создавать нового действительного пользователя для каждого отдельного теста, вам нужно сделать это в своем хуке before (: each). Если вы собираетесь удалить некоторые файлы из файловой системы, вы должны сделать это с помощью обработчика before. Если все ваши тесты создают файл tmp, и вы хотите удалить его после теста, вы сделаете это в хуке after (: each) или after (: all).
Эти две концепции различаются тем, что фабрики не нацелены на создание ловушек вокруг ваших тестов, они нацелены на создание действительных объектов и записей Ruby, так что вы можете сохранять гибкость и СУХО создание своих объектов. Перехватчики «до» и «после» предназначены для задач настройки и демонтажа, которые совместно используются в группе примеров, чтобы вы могли сохранить свой код настройки и разрыва «СУХИМ».
give_me_a_valid_model
функцию. Если вам понадобится более одного before :each
блока, это избавит вас от необходимости повторения. Чем сложнее настроить эту действительную модель (ассоциации, обеспечение уникальных значений и т. Д.), Тем больше усилий это сэкономит вам.
- person Nathan Long; 01.11.2012
FactoryGirl заменяет светильники в тестах. Таким образом, вам не придется обновлять фикстуры при изменении модели данных. Крепления также могут стать громоздкими по мере добавления дополнительных крайних вариантов.
FactoryGirl генерирует данные на лету, а добавление и удаление полей намного проще. Кроме того, вы можете использовать его в настройке точно так же, как вы бы использовали приборы.
Это проясняет?
также определения фикстур являются глобальными для всего вашего приложения. Фабрики могут быть локальными, поэтому данные, специфичные для изолированного тестового примера, находятся в настройке для этого конкретного контекста, а не в одном глобальном файле фикстур.
Эта книга очень хорошо освещает тему, если вам нужно больше материалов для чтения.