4

我正在尝试模拟 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);

但我在第一行得到了这个异常:

要模拟的类型必须是接口或抽象或非密封类。

如果我更改HttpPostedFileHttpPostedFileBase我打电话时会收到此异常mockFileWrapper.Object

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

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

4

2 回答 2

9

你应该在嘲讽HttpPostedFileBase,而不是HttpPostedFileWrapper

于 2012-05-17T20:38:03.077 回答
0

您不能模拟没有公共构造函数的类型,例如HttpPostedFile.

于 2012-05-17T20:36:26.167 回答