Нужно ли проводить модульное тестирование валидаций ActiveRecord? - PullRequest
8 голосов
/ 12 февраля 2009

Нужно ли проводить модульное тестирование валидаций ActiveRecord или они уже хорошо протестированы и, следовательно, достаточно надежны?

Ответы [ 4 ]

15 голосов
/ 12 февраля 2009

Проверки как таковые должны быть надежными, но вы можете проверить наличие проверки.

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

4 голосов
/ 12 февраля 2009

Достаточно признать, что такие библиотеки, как ActiveRecord, лучше протестированы разработчиками, чем когда-либо вами: для них это первостепенная задача, для вас это в лучшем случае тангенциальная.

Это не значит, что ошибок не будет - я однажды нашел маленький адаптер MS SQL Server - но тот тип теста, который вы, скорее всего, будете внедрять, вряд ли выявит их, поскольку они Скорее всего, это крайние случаи. Если вы действительно обнаружите ошибку, конечно, вероятно, очень полезно, если вы сообщите о ней с помощью тестового примера, который ее обнаружит!

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

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

3 голосов
/ 12 февраля 2009

Как писал Майк, по крайней мере вы должны проверить, что валидация существует. Это всего лишь небольшой учет двойной записи (проверка работоспособности), который достаточно прост.

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

class Person < ActiveRecord::Base
  validates_format_of :email,
      :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end

Да, проверки хорошо проверены и достаточно надежны. Но правильное использование проверок - это то, что вы хотите проверить.

0 голосов
/ 30 апреля 2010

В качестве дополнительного примечания в сообщении Райана Бигга в блоге has_and_belongs_to_many double insert упоминается кто-то, столкнувшийся с ошибкой в ​​ActiveRecord (хотя и не связанной с проверкой). Как он указывает, не думайте, что у Rails не может быть ошибки, потому что мы знаем, что на Rails есть 900 открытых билетов.

Но да, основная причина, по которой вы пишете тест, состоит в проверке правильности использования ActiveRecord.

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