我正在尝试模拟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]
有谁知道我能做些什么来解决这个问题?
答案 0 :(得分:7)
你应该嘲笑HttpPostedFileBase
,而不是HttpPostedFileWrapper
。
答案 1 :(得分:0)
您无法模拟没有公共构造函数的类型,例如HttpPostedFile
。