我有多个使用电子邮件验证的模型。因此我将验证提取到自定义验证器中。我按照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
太棒了,我很高兴我的帮助。你能否对你的全部测试进行评估?谢谢:) –
Hi @Ile!我已经将我实施的解决方案添加为答案。再次感谢你! – Tobias