Использование FactoryGirl для насмешки над пропавшим пользователем

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

Я подумал об использовании FactoryGirl с конкретными фабриками для этого случая.

Мой предварительный вопрос: это хорошее решение?

Теперь к моей актуальной проблеме. В моих средах разработки мой код перезагружается при каждом новом запросе. Проблема в том, что фабрики загружаются только один раз при запуске сервера. Поэтому после 1-го запроса «классы», с которыми связаны мои фабрики, больше не являются классами, загруженными для ответа на новый запрос, и я могу получить такие ошибки, как

FactoryGirl.create(:my_class).is_a?(MyClass) # => false

Whiwh вызовет сбои приложения (в какой-то момент в моем коде мне нужно протестировать некоторые классы)

Как я могу перезагрузить свои фабрики для тех сред, которые перезагружают некоторый код при каждом запросе, или вообще избежать этого несоответствия классов?


person Cyril Duchon-Doris    schedule 19.04.2016    source источник
comment
Возможный дубликат Перезагрузить factory_girl factory   -  person Dave Schweisguth    schedule 21.04.2016
comment
@DaveSchweisguth спасибо за ссылку. Но это не говорит мне, куда я должен поместить этот код перезагрузки? Его нужно вызывать ‹= 1 раз за запрос, в зависимости от того, нужно ли мне что-то подделать (и, следовательно, перезагрузить фабрики) или нет. Мне очень редко нужно показывать страницы, где мне нужно подделывать, перезагружать фабрики было бы излишним? На самом деле я нашел код, который может перезагружать фабрики при ActionDispatch::Callbacks.after обратных вызовах, но он становится таким медленным! Имеет смысл перезагружать их только в том случае, если мне нужно подделать...   -  person Cyril Duchon-Doris    schedule 21.04.2016
comment
Похоже, вы сами ответили на свой вопрос: перезагрузите фабрики непосредственно перед их использованием. Однако, если он заметно замедляется, это может означать, что factory_girl не подходит в данном случае. Трудно сказать, действительно ли это необходимо, не видя намного больше дизайна и кода.   -  person Dave Schweisguth    schedule 21.04.2016
comment
Я часто вызываю свой фальшивый код несколько раз, когда мне нужно что-то подделать. Поэтому мне нужно было бы сохранить некоторое логическое значение в глобальной переменной, которая сбрасывается после каждого обслуживаемого запроса. Как я могу это сделать ?   -  person Cyril Duchon-Doris    schedule 21.04.2016
comment
Я бы использовал фильтр Rails вокруг (around_action).   -  person Dave Schweisguth    schedule 21.04.2016