Где поместить общий код модульного теста в ruby ​​на рельсы? - PullRequest
0 голосов
/ 22 сентября 2010

Используя Rails 3.0, у меня есть небольшой кусочек кода, который я, кажется, вызываю во всех моих модульных тестах.

  1. Есть ли общее место для размещения общего кода модульного теста, который не будет включен ни в модульные, ни в функциональные тесты? Я бы предпочел включить ТОЛЬКО в нужные файлы, только в модульные тесты.

  2. Я новичок в тестировании в целом. В Rails часто тестируют валидации (например, test: validates_presence_of: name)? Большинство моих функций, которые проверяют валидации на модели, в основном одинаковы (просто поменяйте местами правильное имя прибора и атрибута). Не кажется очень сухим. Ищите способ рефакторинга.

Спасибо.

1 Ответ

1 голос
/ 22 сентября 2010

Вы можете разместить код в файле test / test_helper.rb.Вы уже должны найти фрагмент кода, который выглядит следующим образом:

class ActiveSupport::TestCase
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
end

Если код должен использоваться во всех ваших тестах, вы можете добавить свои методы в класс ActiveSupport::TestCase.В противном случае оберните их в Module и смешайте модуль там, где это необходимо.

Рекомендуется проверять валидации, а не тестировать саму валидацию (макрос validates_presence_of уже протестирован в базе кода Rails)но чтобы убедиться, что шансы в вашем коде не влияют на бизнес вашего класса.

Например, может быть проверка, которая должна запускаться только в определенных событиях.Или вы можете убедиться, что никто не удалил вашу сверхсекретную проверку для этой конкретной модели.

Если вы хотите проверить проверки вашей модели, я рекомендую вам проверить shoulda .Следует, чтобы предоставить несколько удобных методов для проверки ваших проверок.

class PostTest < ActiveSupport::TestCase

  should belong_to(:user)
  should validates_presence_of(:id)

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...