Какая разница между прибором и фабрикой в ​​моих юнит-тестах? - PullRequest
4 голосов
/ 16 октября 2011

Немного смущен, в чем разница между фабрикой и прибором?

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

Или это совершенно не связано:)

Ответы [ 3 ]

10 голосов
/ 17 октября 2011

Очень краткий ответ заключается в том, что концептуально нет разницы между устройством Rails и фабрикой Factory Girl.Это просто другой синтаксис для достижения той же цели.

Однако это сбивает с толку, потому что терминология общих концепций тестирования / кодирования использовалась отдельными проектами в мире Rails / Ruby.В общем:

По сути, в Rails как Fixtures, так и Factories (как определено Factory Girl), являются просто способамисоздание объектов.Предполагается, что вы будете использовать их для создания Test Fixture или состояния настройки вашего теста.Запутанная часть заключается в том, что вы можете использовать несколько Rails-«Fixtures» для создания Fixture (baseline) отдельного теста.

Сама Factory Girl - это реализация шаблона Object Mother , которыйописывает способ создания настроек тестового прибора с использованием персон.

2 голосов
/ 16 октября 2011

Ну, они используются для достижения той же цели, чтобы заполнить БД данными для вашего теста.

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

С фабриками у вас есть значимый (и действительный) контент в БД за счет скорости.

Существуют и другие решения, например fixture_builder, которые позволяют определять приборы с использованием фабрик;) фабрики запускаются только один раз, а затем конвертируются в фреймворки. https://github.com/rdy/fixture_builder

0 голосов
/ 16 октября 2011

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

ПРИМЕЧАНИЕ: я отвечаю только на половину вопроса, потому что я не очень знаком с прибором ... простобросая мои 2 цента здесь.Надеюсь, это поможет.

...