asp.net-mvc – Mocking HttpPostedFileBase和InputStream进行单元测试
发布时间:2020-05-24 01:26:47 所属栏目:asp.Net 来源:互联网
导读:我想测试以下代码行: ...Bitmap uploadedPicture = Bitmap.FromStream(model.Picture.InputStream) as Bitmap;... 图片是我的模型类型HttpPostedFileBase中的一个属性. 所以我想模拟一个HttpPostedFileBase属性进行单元测试: model.Picture = new MockHttp
|
我想测试以下代码行: ... Bitmap uploadedPicture = Bitmap.FromStream(model.Picture.InputStream) as Bitmap; ... 图片是我的模型类型HttpPostedFileBase中的一个属性. model.Picture = new Mock<HttpPostedFileBase>().Object; 完全没问题. 现在我必须模拟InputStream,否则为null: model.Picture.InputStream = new Mock<Stream>().Object; 这不工作,因为InputStream是只读(没有setter方法): public virtual Stream InputStream { get; }
有没有一个好的和干净的方式来处理这个问题? 解决方法你好:)我做了类似的事情,[TestInitialize]
public void SetUp()
{
_stream = new FileStream(string.Format(
ConfigurationManager.AppSettings["File"],AppDomain.CurrentDomain.BaseDirectory),FileMode.Open);
// Other stuff
}
而在测试本身, [TestMethod]
public void FileUploadTest()
{
// Other stuff
#region Mock HttpPostedFileBase
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var files = new Mock<HttpFileCollectionBase>();
var file = new Mock<HttpPostedFileBase>();
context.Setup(x => x.Request).Returns(request.Object);
files.Setup(x => x.Count).Returns(1);
// The required properties from my Controller side
file.Setup(x => x.InputStream).Returns(_stream);
file.Setup(x => x.ContentLength).Returns((int)_stream.Length);
file.Setup(x => x.FileName).Returns(_stream.Name);
files.Setup(x => x.Get(0).InputStream).Returns(file.Object.InputStream);
request.Setup(x => x.Files).Returns(files.Object);
request.Setup(x => x.Files[0]).Returns(file.Object);
_controller.ControllerContext = new ControllerContext(
context.Object,new RouteData(),_controller);
// The rest...
}
希望这可以为您的解决方案提供一个想法:) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC:CSS文件存在时返回302错误
- asp.net-mvc – 为什么ListBoxFor不选择项目,但ListBox是?
- asp.net-mvc – asp.net mvc排除来自搜索引擎抓取的动作
- asp.net-mvc-3 – DropDownListFor – 不选择“Selected”值
- 为什么Asp.Net MVC 5在_Layout.cshtml的底部放置@ Scripts.
- asp.net-mvc – 当参数为Model时,ASP.NET MVC发布文件模型绑
- .net-4.0 – 从自定义IHttpHandler调用MvcHttpHandler.Exec
- asp.net – 对于布尔查询字符串参数使用“true”或“1”
- asp.net – webservice和web应用程序有什么区别?
- asp.net – Visual Studio 2012不发布项目
推荐文章
站长推荐
- reportviewer – 在ASP.NET MVC中的RDLC报表中看
- 如何在ASP.NET MVC中渲染HTML字符串?
- asp.net – UpdatePanel中的动态创建控件?
- asp.net-mvc – 测量时间调用ASP.NET MVC控制器操
- asp.net – GET与POST真的很重要吗?
- asp.net – 在ashx文件中,我可以设置返回文件的文
- asp.net+js实现批量编码与解码的方法
- 实体框架 – 我们如何使用Breeze的本地时区生存
- asp.net-mvc – 在Asp.Net MVC 2中有一种更好的方
- asp.net – Jquery Ajax,不在Internet Explorer中
热点阅读
