У меня есть несколько моделей с проверкой подлинности электронной почты. Поэтому я извлек подтверждение в пользовательский валидатор. Я делаю это, следуя руководству Rails Guides.Тестирование пользовательских валидаторов с помощью Minitest
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
record.errors[attribute] << (options[:message] || "is not an email")
end
end
end
Пока что так хорошо. Но поскольку я извлек функциональность проверки подлинности электронной почты в свою собственную область, я также хочу протестировать ее отдельно. Я не хочу добавлять те же тесты формата электронной почты для каждой модели.
Я нашел еще один question, который также спросил то же самое, но для RSpec. Но поскольку я еще не работал с заглушками и макетами, я не знаю, как переносить тесты на тесты Minitest. Я не нашел никаких ресурсов, которые проверяют пользовательские валидаторы с помощью Minitest.
Кто-нибудь знает, как написать такие тесты для пользовательских валидаторов в Minitest (не используя спецификации!)?
Это именно то, что я искал. Я никогда не думал о создании нового класса и тестировал его оттуда. Я всегда искал способ непосредственного тестирования. Но это выглядит еще лучше! Благодаря! – Tobias
Отлично, я рад, что помог. Не могли бы вы поместить (bin) полный тест? Спасибо :) –
Привет @Ile! Я добавил свое реализованное решение в качестве ответа. Еще раз спасибо! – Tobias