Как смоделировать загрузку файлов с помощью NUnit - PullRequest
0 голосов
/ 10 февраля 2020

Я занят написанием модульных тестов для программы и застрял на том, как проверить загружаемый файл. Я использую. 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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...