Я занят написанием модульных тестов для программы и застрял на том, как проверить загружаемый файл. Я использую. Net Framework 4.7.2 и NUnit 3.12.
Это сервисный метод, для которого я пишу тест, но я не знаю, как имитировать HttpRequestMessage
, чтобы он напоминал фактический файл загружено. Любая помощь с благодарностью.
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
};
}
Вот мой тест до сих пор
[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
}