我通常会说任何一段代码,不管它做什么,特别是如果它在生产环境中运行应该被测试。
然而,我一直在想,动态电子邮件内容是否应该是一个异常(exception)。它经常变化,通常很难正确和全面地测试我不知道它是否值得。通常情况下,单元测试的内容无论如何都是复制/粘贴的(我知道这并不理想,但仍然会发生),因此除了告诉我们某些东西是否会严重爆炸之外,它并没有真正带来任何真正的好处,并且只是尝试发送电子邮件(不验证副本)的简单单元测试应该解决这个问题。
我希望能从其他开发人员那里得到一些意见。让我知道你的想法。单元测试电子邮件内容与否?
编辑:
澄清一下,我们已经针对实际发送电子邮件进行了单独的单元/集成测试,这个问题仅指测试电子邮件的内容。目前我们只对动态内容进行单元测试,除了点击测试之外没有对模板文本进行单元测试。
最佳答案
你应该总是测试一切,是的,但你不能总是对一切进行单元测试。在这种情况下,在集成和用户验收测试中尝试验证电子邮件模板是否已正确生成可能会更好。
但是,您可以对您的程序如何构建电子邮件模板进行单元测试,这是我建议您采用的方法。
构建一个用于填充电子邮件模板的 API,一个具有以下方法的辅助类:
// using C# syntax returning strings for the example -- you could just as easily return
// System.Net.Mail.MailMessage or javax.mail.Message instead
string BuildPasswordChangeTemplate(string username, string newPassword, string email);
string BuildErrorTeplate(string methodName, string serviceName, Exception e);
只要方法是在接口(interface)或虚拟(并且不是静态的)中定义的,您就可以模拟帮助程序类,并在适当的时间将代码调用到适当的模板构建器中进行单元测试。然后,您可以将拼写和格式以及其他内容推送到用户验收测试中,并认为您的工作已经完成。