Когда писать фиктивный объект против Factory (FactoryGirl)

У меня очень большая база кода Rails, и мы используем множество фабрик (FactoryGirl). Проблема в том, что экземпляр factory girl создает транзакцию базы данных, поэтому, когда мы запускаем весь наш набор тестов, это занимает очень много времени. Однако, если бы мы использовали макеты Rspec правильно, то тесты выполнялись бы молниеносно, потому что макеты очень легкие — транзакция БД не требуется.

Мой вопрос: когда вы издеваетесь над ролями, сущностями или объектами, а когда используете действительный экземпляр объекта? Если бы кто-то мог привести пример, это было бы здорово.


person robskrob    schedule 05.04.2015    source источник


Ответы (1)


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

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

Можно также быть щедрым, используя фабрики с тестами контроллера. Главным образом потому, что контроллер — это внешний слой вашей серверной экосистемы. Чтобы протестировать его, вам нужно будет интегрироваться с большим количеством Rails и частями ваших моделей. Я считаю, что здесь можно использовать фабрики.

Для логики приложения — службы, домена, политики, старых простых объектов ruby ​​— вы должны тестировать каждый домен изолированно. Для тестируемого модуля или объекта не стесняйтесь инициализировать его, но создавайте двойники, макеты и заглушки для его соавторов.

person robskrob    schedule 07.08.2015