I am busy writing Unit tests for a program and got stuck on how to test a file being uploaded. I am using .Net Framework 4.7.2 and NUnit 3.12.
This is the service method I am writing a test for but I dont know how to mock the HttpRequestMessage
as to resemble an actual file being uploaded. Any assistance is greatly appreciated.
public async Task<MultipartFileDataModel> WriteAsync(HttpRequestMessage request, string directory)
{
var dataStreamProvider = new MultipartFormDataStreamProvider(directory);
try
{
await request.Content.ReadAsMultipartAsync(dataStreamProvider)
.ConfigureAwait(false);
}
catch
{
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
}
return new MultipartFileDataModel
{
LocalFileName = dataStreamProvider.FileData[0].LocalFileName,
HeaderFileName = dataStreamProvider.FileData[0].Headers.ContentDisposition.FileName
};
}
Here is my test so far
[Test]
public async Task UploadContactFile_ReturnsContactFileIdAndListOfColumns()
{
// Arrange
var fixture = CreateFixture();
var contactFilesDirectory = "D:\\Tenants\\Dev\\contactfiles";
var request = fixture.Create<HttpRequestMessage>();
request.Content = new MultipartContent();
var files = fixture.Create<MultipartFileDataModel>();
fixture.Freeze<Mock<IMultipartFileWriter>>()
.Setup(repo => repo.WriteAsync(request, contactFilesDirectory))
.Returns(Task.FromResult(files));
var service = fixture.Create<MultipartFileWriter>();
// Act
var result = await service.WriteAsync(request, contactFilesDirectory)
.ConfigureAwait(false);
// Assert
}
Aucun commentaire:
Enregistrer un commentaire