繁体   English   中英

C# 单元测试如何模拟 IFormFileCollection?

[英]C# Unit Test How to mocK IFormFileCollection?

我有一个使用 IFormFileCollection 的方法,我想对它进行单元测试。

我的方法:

public IActionResultUploadBankAccount(){

 IFormFileCollection files = Request.Form.Files;
                if (!files.Any()) return Ok(new GeneralDto.Response("Check your files!"));
 // and my codes

}

和我的授权码:

模拟授权.cs:

public static void Authorize(this ControllerBase controller,....){

//my codes
 var bytes = Encoding.UTF8.GetBytes("This is a text file");
            IFormFile file = new FormFile(new MemoryStream(bytes), 0, bytes.Length, "Data", @"\Mock\Images\testFile.jpg");


}

当我试图测试它时,方法会抛出错误,上面写着:

System.NullReferenceException:Object 引用未设置为 object 的实例。

我究竟做错了什么? 或者有什么方法可以测试 FormFileCollection?

由于 FormFileCollection 是FormFileCollection的一部分,因此您不应该对其进行测试。 Microsoft 将测试此功能。

您应该测试的只是您自己的逻辑。

为了模拟IFormFileCollection我会使用 mocking 框架,例如Moq并做这样的事情

private Mock<IFormFileCollection> _formFileCollectionMock;
private IClassToTest _sut;

public YourConstructor()
{
    _formFileCollectionMock= new Mock<IFormFileCollection>();
    _sut = new ClassToTest(_formFileCollectionMock.Object);
}

暂无
暂无

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

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