如何为使用System.Net.Mail等外部服务的方法编写单元测试?
我是否只是检查一个返回值,看看发送电子邮件是否有任何错误,并假设它没有成功发送?
答案 0 :(得分:7)
为邮件服务创建mock object。
简而言之,这意味着您编写的类可以替代发送邮件的行为。这样,您可以非常轻松地为测试创建不同的情境:成功的邮件,失败的邮件等等。
简短的介绍:http://www.programmersheaven.com/user/pheaven/blog/217-An-Introduction-to-Mock-Objects/
另一个,代码示例:http://blogs.clearscreen.com/ragc/archive/2004/08/31/395.aspx
答案 1 :(得分:4)
这取决于您想要的测试级别。如果您更关心测试方法,并且电子邮件只是一小部分,那么您可以考虑模拟电子邮件发送服务。 Gerrie 的链接很好。
但是,如果你真的想测试邮件发送,这里有一些想法。
因为这些测试通常意味着与外部事物交谈,所以它们被称为integration tests而不是单元测试。
但总的来说,我认为你更关心的是确保你的格式/电子邮件地址正确,而不是微软是否正确实现了SmtpClient。所以单元测试和模拟在那里更有意义。