Подтвердить что ты не робот

Factory Девушка - какая цель?

Какая цель Factory Девушка в rspec проверяет, когда я мог бы использовать блоки before(:each)? Похоже, что единственная разница между Factory Girl и before(:each) заключается в том, что Factory готовит создание объекта за пределами теста. Правильно ли это?

4b9b3361

Ответ 1

Драгоценные камни, такие как Factory Девушка и Sham, позволяют создавать шаблоны для действительных и повторных - полезные объекты. Они были созданы в ответ на приборы, в которых фиксированные записи должны были быть загружены в базу данных. Они позволяют больше настраивать, когда вы создаете объекты, и они нацелены на то, чтобы у вас был действительный объект для работы. Они могут использоваться в любом месте ваших тестов и в ваших до и после тестовых крюков.

before (: each), before (: all), after (: each) и after (: all) все нацелены на то, чтобы дать вам место для настройки и разрыва, которые будут использоваться среди тестовой группы. Например, если вы собираетесь создавать нового действительного пользователя для каждого отдельного теста, тогда вы захотите сделать это в своем крюке (: каждый). Если вы собираетесь очищать некоторые файлы из файловой системы, вы хотите сделать это в начале. Если ваши тесты создают файл tmp и вы хотите удалить его после теста, вы сделаете это в своем после (: каждый) или после (: все).

Различия между этими двумя концепциями заключаются в том, что фабрики не нацелены на создание крючков вокруг ваших тестов, они направлены на создание реальных объектов и записей Ruby, так что вы можете сохранить гибкость вашего объекта и сухим. До и после перехвата нацелены на задачи настройки и разборки, которые совместно используются в группе примеров, чтобы вы могли сохранить код установки и разрыва DRY.

Ответ 2

FactoryGirl заменяет приборы в тестах. Таким образом, вам не нужно будет обновлять светильники при изменении модели данных. Светильники могут также иметь громоздкость, поскольку вы добавляете больше случаев кромки.

FactoryGirl генерирует данные "на лету", а добавление и удаление полей намного проще. Кроме того, вы можете использовать его в настройке, как использовать светильники.

Является ли это более ясным?

Ответ 3

также определения приборов являются глобальными во всем приложении. Фабрики могут быть локальными - поэтому данные, специфичные для изолированного тестового примера, находятся в настройке для этого конкретного контекста, а не в одном глобальном файле светильников.

В этой книге очень хорошо освещен сюжет, если вы хотите узнать больше о чтении