单元测试电子邮件内容

Mit*_*tch 4 email unit-testing

我通常会说一句代码,无论它做什么,特别是如果它在生产环境中运行应该进行测试.不过,我一直在想,动态电子邮件内容应该是个例外.它经常变化,通常是一个痛苦,正确和充分测试,我不知道它是否值得.通常情况下,单元测试的内容是复制/反正粘贴(我知道这是不理想,但仍然发生),所以它不是真的给比告诉我们,如果事情会严重炸毁其他任何真正的好处,以及简单的单元测试只是试图发送电子邮件(不验证副本)应该照顾.

我希望得到其他开发者的一些意见.让我知道你的想法.单元测试电子邮件内容与否?

编辑:为了澄清,我们已经为实际发送电子邮件进行了单独的单元/集成测试,这个问题仅指测试电子邮件的内容.目前我们只对单元测试动态内容,模板文本不是单击测试.

Ran*_*pho 5

你应该总是测试一切,是的,但你不能总是对所有东西进行单元测试.在这种情况下,尝试验证电子邮件模板是否已正确生成在集成和用户验收测试中可能会更好.

但是,您可以对您的程序构建电子邮件模板的方式进行单元测试,这是我建议您使用的路线.

构建一个用于填充电子邮件模板的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);
Run Code Online (Sandbox Code Playgroud)

只要方法在接口或虚拟中定义(并且不是静态的),就可以在适当的时候模拟代码调用相应模板构建器的辅助类和单元测试.然后,您可以将拼写和格式以及其他内容推送到用户验收测试并考虑您的工作已完成.