С# UnitTests Mock File ReadAllBytes выдает System.IO.FileNotFoundExceptionC#

Место общения программистов C#
Ответить
Anonymous
 С# UnitTests Mock File ReadAllBytes выдает System.IO.FileNotFoundException

Сообщение Anonymous »

В контроллере у меня есть результат действия, который возвращает объект FileStreamResult, перед этим действие использует byte[] ReadAllBytes(string path) класса File. p>
Результат действия:
public async Task Download(string path)
{
var myfile = System.IO.File.ReadAllBytes(path);

MemoryStream stream = new MemoryStream(myfile);

return new FileStreamResult(stream, "application/pdf");
}

В моем тестовом проекте xUnit я использую Moq для настроек.
Макет:
using IFileSystem = System.IO.Abstractions.IFileSystem;

private readonly Mock _fileSystem = new Mock();

Метод проверки:
[Fact]
public async Task Download_ShouldReturnPdfAsFileStreamResult_WhenIsFoundByPath()
{
//Arrange
var expected = new byte[]
{
68, 101, 109, 111, 32, 116, 101, 120, 116, 32, 99, 111, 110, 116,
101, 110, 255, 253, 0, 43, 0, 32, 0, 115, 0, 111, 0, 109, 0, 101,
0, 32, 0, 116, 0, 101, 0, 120, 0, 116
};

var path = _fixture.Create();

_fileSystem.Setup(f => f.File.ReadAllBytes(It.IsAny()))
.Returns(expected);

//Act
var result = await _sutController.Download(path )
.ConfigureAwait(false) as FileStreamResult;

//Assert
result.Should().NotBeNull();
//...
}

Теперь, когда я запускаю тест, я получаю следующее исключение:
Сообщение:
System.IO.FileNotFoundException : Could not find file 'C:\Users\Admin\Desktop\GF\Tests\GF.Web.Controllers.Tests\bin\Debug\net6.0\Path69bdc5aa-695a-4779-b38e-12cb2df4c21a'.

Stack Trace: 
SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
OSFileStreamStrategy.ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
File.ReadAllBytes(String path)


Подробнее здесь: https://stackoverflow.com/questions/732 ... dexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»