gpt4 book ai didi

asp.net-mvc - 如何对 Asp.net MVC fileUpload 进行单元测试

转载 作者:行者123 更新时间:2023-12-02 08:33:44 24 4
gpt4 key购买 nike

您好,我是 TDD 开发新手。
我看到这篇文章 Using asp.net mvc to upload file
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");}

the value is bounded in a form as

<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 在 html 表单中被解析为 Controller 中名为“file”的参数,并在 Index Controller 中被解析为解析参数。

我有两个问题:
1. 如何验证file.SaveAs方法?
2.我不太确定如何用它进行单元测试。在测试 Controller 文件中,我应该有一个假的 HttpPostedFileBase 但它是密封的。有人有一些策略来解决这个问题吗?

非常感谢!

最佳答案

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

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

然后设定任何期望:

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

然后将其传递给您的 Controller 方法:

controller.Index(file);

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

关于asp.net-mvc - 如何对 Asp.net MVC fileUpload 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com