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