2013-10-28 85 views
0

我想写一个单元测试以下codesnippet:如何使用moq模拟System.Net.Mail.Attachment?

var attachment = new Attachment(path) 
{ 
    ContentId = Path.GetFileName(path) 
}; 

return attachment; 

不幸的是,附件构造函数抛出一个FileNotFoundException异常,如果我打电话与在单元测试代码中的假路径的构造函数。

我该如何嘲笑这段代码,以验证ContentId属性是否设置正确?我不想测试框架代码。

+0

是整个测试还是你将这个附件注入到另一个你想测试的模块?因为你真的不需要测试.Net框架代码,只是你自己的。 – JMK

+0

我明白他想在测试代码完成后测试Attachment.ContentId的状态。 – galenus

+0

@galenus:的确 - 我想测试附件的状态.ContentId – bitsmuggler

回答

1

您不必为此使用Moq,只需使用Attachment类的this构造函数,提供您从测试项目的资源获取的流以及匹配的ContentType。例如,您可以向资源添加一些文本文件并指定PlainText MIME类型。

+0

谢谢你的回答 - 是的,这是一条路。但遗憾的是,由于可测试性,我必须调用另一个ctor。你怎么看? – bitsmuggler

+0

您可以自行包装任何框架类型,根据需要调整它,附件类等等。你的包装可以有所有的虚拟方法,或者它可以实现一个接口,这两个解决方案都是可以嘲弄的,从而使测试变得更简单。但是,你必须为实现最终结果决定最实用的方式。所以我不认为你现在的解决方案是不可接受的。 – galenus

+0

谢谢你的详细评论 - 你的对。 – bitsmuggler