Как Rails организовывает юнит-тесты? - PullRequest
3 голосов
/ 28 мая 2011

При создании модульных тестов в проекте Rails первым вопросом, который я задавал себе, было «что такое соглашение для организации модульных тестов», потому что почти все остальное продиктовано соглашением.Кроме того, мне любопытно, меняется ли соглашение между MiniTest, TestUnit и Rspec.

Что я сделал до сих пор, так это отразил мою структуру каталогов Rails в моем каталоге test / unit, например:

[Rails Root]
 /lib/
  ./postgres.rb
  ./awesome_parser.rb
 /app/helpers
  ./psychic_helper.rb

 /test/unit/
  ./lib/postgres.rb
  ./lib/awesome_parser.rb
  ./app/helpers/psychic_helper

Какой самый обычный способ организации тестов, чтобы, когда другие запрыгивают в этот проект, они не проклинали мое имя?

1 Ответ

4 голосов
/ 28 мая 2011

Rspec аналогичен приведенному выше, за исключением того, что пропускает каталог 'app', например (из корня rails):

spec/controllers/user_controller_spec.rb
spec/models/user_spec.rb
spec/helpers/user_helpers_spec.rb

Но каталог lib и другие по-прежнему используются:

spec/lib/user_stuff_spec.rb

Интеграционные тесты пересекают границы, поэтому получите свой собственный каталог:

spec/integration/route_specs.rb

У помощников спецификаций есть свой собственный каталог:

spec/support/custom_matchers.rb

Возможно, это не соглашение, но мы помещаем наши фабрики вих собственный каталог:

spec/factories/user_factories.rb
...