模拟HttpPostedFileWrapper

时间:2012-05-17 20:33:28

标签: c# .net asp.net-mvc mocking moq

我正在尝试模拟MVC对象HttpPostedFileWrapper,因此我可以特别测试“ContentType”和“InputStream”属性。我把我的模拟设置为:

var mockPostedFile = new Mock<HttpPostedFile>();
var mockFileWrapper = new Mock<HttpPostedFileWrapper>(mockPostedFile);
mockFileWrapper.Setup(file => file.ContentType).Returns("application/pdf");
mockFileWrapper.Setup(file => file.InputStream).Returns(fileStream);

但是我在第一行得到了这个例外:

  

类型为mock必须是接口或抽象或非密封类。

如果我将HttpPostedFile更改为HttpPostedFileBase,当我致电mockFileWrapper.Object

时,我会收到此异常
  

无法实例化类的代理:System.Web.HttpPostedFileWrapper。   找不到与给定参数匹配的构造函数:   Moq.Mock`1 [System.Web.HttpPostedFileBase]

有谁知道我能做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:7)

你应该嘲笑HttpPostedFileBase,而不是HttpPostedFileWrapper

答案 1 :(得分:0)

您无法模拟没有公共构造函数的类型,例如HttpPostedFile