asp.net-mvc – 我应该如何测试从控制器发送电子邮件?
发布时间:2020-12-16 03:50:22 所属栏目:asp.Net 来源:网络整理
导读:我开始进行单元测试并尝试做一些TDD.我已经阅读了很多关于这个主题的内容,并写了一些测试.我只是想知道以下是否是正确的方法. 我想在我的网站上添加通常的“联系我们”设施.你知道的事情,用户用他们的电子邮件地址填写表格,输入一条简短的信息,然后按一个按
我开始进行单元测试并尝试做一些TDD.我已经阅读了很多关于这个主题的内容,并写了一些测试.我只是想知道以下是否是正确的方法.
我想在我的网站上添加通常的“联系我们”设施.你知道的事情,用户用他们的电子邮件地址填写表格,输入一条简短的信息,然后按一个按钮发回表格. 模型绑定器执行它们的操作,我的操作方法接受发布的数据作为模型.然后,操作方法将解析模型并使用smtp向网站管理员发送电子邮件,让他/她填写有人在其网站上填写联系表单. 现在问题….为了测试这个,我是否正确创建一个接口IMessageService,它有一个方法Send(emailAddress,message)来接受电子邮件地址和消息体.在具体类中实现接口,让该类处理smtp的东西并实际发送邮件. 如果我将接口作为参数添加到我的控制器构造函数中,那么我可以使用DI和IoC将具体类注入控制器.但是在进行单元测试时,我可以创建我的IMessageService的伪造或模拟版本并对其进行断言. 我问的原因是我看过其他人为SmtpClient生成接口然后嘲笑它的例子.真的有必要走那么远,还是我不理解这些东西? 解决方法
您仍然需要测试调用邮件程序的类.我建议你可能想要做两件事.我通常创建一个IMailClient接口和一个实现接口的SmtpClient包装器.在代理类中使用(并注入)接口,该代理类知道如何构造消息并将其发送(它可能有几个工厂类型的方法,可以构造多种不同类型的消息). SmtpClient周围的垫片应该就是这样,因此几乎不需要进行单元测试.您可以在测试代理类时模拟填充程序,并在测试控制器时模拟代理类.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 你会认为这是一个单身/单身模式吗?
- ASP.NET EF错误:11007未映射实体类型
- asp.net – Session实际上如何在MVC中运行?
- asp.net-mvc-4 – 在Visual Studio 2017 RC中无法识别ASP.N
- asp.net-mvc – 如何从ASP MVC5中的属性路由获取路由名称
- 如何以编程方式单击ASP.NET网页上的按钮?
- asp.net-web-api – 将域对象元数据暴露给breeze js并跟踪更
- asp.net-mvc – 如何使用RazorEngine从模板发送电子邮件
- asp.net-mvc – 程序集使用System.Web.Http 5.1,它比引用的
- asp.net – 使用SQL Server进行关键字搜索
推荐文章
站长推荐
热点阅读