2012-11-02 2 views
0

При разработке приложения Rails с устаревшей схемой, используемой существующим приложением, если в таблицах нет ограничений NULL для столбцов внешнего идентификатора по всей схеме, чтобы создавать/сохранять модели для тестов, модели должны существовать для этих ассоциаций и их ассоциаций и т. д. Таким образом, это не так просто, как просто создавать одну модель за раз, когда она вам нужна, и тестировать с ней.Стратегии разработки/тестирования Rails со сложной устаревшей схемой

Что касается тестирования, кажется, это проблема, если вы используете FactoryGirl и хотите создать и сохранить экземпляры модели для возврата из контроллеров и т. Д., Когда задействованы все зависимостей ассоциаций. Другим вариантом является издевка, но издевательство может быть немного более трудоемким, и это не позволяет вам проводить интеграционное тестирование так же легко. Другой - использовать светильники, но они требуют много времени и хрупкости. Другим является предварительное заполнение тестовой базы данных производственными данными, но это не решает необходимость для фабрик и т. Д./Неизвестных данных, ожидаемых в тестах, и Rails обычно ожидают начать с чистой БД для тестовой среды.

Какие стратегии разработки моделей, тестов и т. Д. Вы используете, когда у вас есть существующая сложная схема, на которую вы привязываете приложение Rails, а не только для чтения данных, но также и для записи существующей схемы, которая используется по существующей производственной заявке? (т. е. проблема «перестроить корабль в море»)

ответ

1

Когда мы впервые начали эту проблему, я искал что-то, что могло бы автогенерировать модели из существующей схемы. Я нашел генератора магических моделей доктора Ника, но он только заявил, что работал в Rails 2.x. У меня есть среда Rails 2.x (забудьте о той конкретной версии, в которой она работала), но она, похоже, мало помогла, поэтому я написал сценарий для создания наших моделей. Однако, когда мы начали разработку, у нас тогда была нагрузка моделей, поэтому мы начали пытаться вытеснить те, которые нам не нужны, а затем нужно было прокомментировать ассоциации с моделями, которых больше не было, но некоторые из них были необходимы/NOT NULL, так что теперь нам нужно переместить их обратно и раскомментировать их больше, чем мы думали.

Мы сделали запись и раскрыть некоторые вещи, которые были полезны во время процесса, не все из которых мы использовали, но они могут быть полезны другим:

Что касается установки тестовых данных, я начал писать инструмент для автоматизации разработки FactoryGirl заводов под названием Stepford и написал Modelist помочь нам тестовые модели, решать круговые зависимости и определить зависимости моделей, поэтому нам не нужно включать все автоматически сгенерированные модели.

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

Смежные вопросы