繁体   English   中英

如何单元测试Asp.net MVC fileUpload

[英]How to unit test Asp.net MVC fileUpload

你好,我是TDD开发的新手。
我发现这篇文章使用asp.net mvc上传文件
Phil Haack说一个类可以用于文件上传控制,他使用默认的HttpFileCollectionValueProvider:

[HttpPost]
public ActionResult Index(HttpPostedFileBase file) {

  if (file.ContentLength > 0) {
    var fileName = Path.GetFileName(file.FileName);
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    file.SaveAs(path);
  }

  return RedirectToAction("Index");
}

该值的范围为

<form action="" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" />
  <input type="submit" />
</form>

请注意,HttpPostedFileBase被解析为控制器中的参数,其名称为“file”,位于html表单中,并作为索引控制器中的解析参数。

我有两个问题:
1.如何验证file.SaveAs方法?
我不太确定如何对此进行单元测试。 在测试控制器文件中,我应该有一个假的HttpPostedFileBase但它是密封的。 有没有人有一些策略来处理这个问题?

非常感谢你!

我很抱歉,如果这不是你要问的,但我只是在你的测试中模拟HttpPostedFileBase:

var file = MockRepository.GenerateStub<HttpPostedFileBase>();

然后设定任何期望:

file.Expect(f => f.ContentLength).Return(1);
file.Expect(f => f.FileName).Return("myFileName");

然后将其传递给您的控制器方法:

controller.Index(file);

这样您就可以模拟文件的行为。 我不确定.SaveAs - 您是否已覆盖此方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM