如何将mock对象作为null返回

时间:2014-08-16 11:45:21

标签: c# asp.net-mvc unit-testing moq httppostedfilebase

正如主题所说,我不知道如何在我的MVC测试项目中将模拟对象返回为null。我是进行单元测试的新手。

我有一个动作:

[HttpPost]
public ActionResult Edit(ClubToAddVM  clubToAddVm, HttpPostedFileBase imageFile)
{
    if (ModelState.IsValid)
    {
        if (imageFile!=null)
        {
            clubToAddVm.ImageMimeType = imageFile.ContentType;
            clubToAddVm.ImageData = new byte[imageFile.ContentLength];
            imageFile.InputStream.Read(clubToAddVm.ImageData, 0, imageFile.ContentLength);
        }
    }
    ...
}

我希望在我的测试中将imageFile对象作为null传递。不幸的是,我无法创建HttpPostedFileBase抽象类的实例,我想尝试这样的事情:

var mockImageFile = new Mock<HttpPostedFileBase>();

但是我不知道怎么把它变成null,因为 mockImageFile.Object只读。 有任何想法吗?

1 个答案:

答案 0 :(得分:3)

如果您想要创建实例{0},则不必创建实例,只需执行以下操作:

null

它是一个抽象类确实意味着你不能创建它的实例,但声明该类型的变量并将其设置为HttpPostedFileBase imageFile = null; 是完全正常的。