我想编写用于在ASP.NET Core 1中上传文件的测试,但似乎找不到一种模拟/实例化从IFormFile派生的对象的好方法。有关如何执行此操作的任何建议?
谢谢。
假设您有一个控制器。
public class MyController : Controller {
public Task<IActionResult> UploadSingle(IFormFile file) {...}
}
...IFormFile.OpenReadStream()
使用被测方法访问的位置。您可以使用Moq模拟框架创建测试以模拟流数据。
[TestClass]
public class IFormFileUnitTests {
[TestMethod]
public async Task Should_Upload_Single_File() {
//Arrange
var fileMock = new Mock<IFormFile>();
//Setup mock file using a memory stream
var content = "Hello World from a Fake File";
var fileName = "test.pdf";
var ms = new MemoryStream();
var writer = new StreamWriter(ms);
writer.Write(content);
writer.Flush();
ms.Position = 0;
fileMock.Setup(_ => _.OpenReadStream()).Returns(ms);
fileMock.Setup(_ => _.FileName).Returns(fileName);
fileMock.Setup(_ => _.Length).Returns(ms.Length);
var sut = new MyController();
var file = fileMock.Object;
//Act
var result = await sut.UploadSingle(file);
//Assert
Assert.IsInstanceOfType(result, typeof(IActionResult));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句