В контроллере у меня есть результат действия, который возвращает объект 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
С# UnitTests Mock File ReadAllBytes выдает System.IO.FileNotFoundException ⇐ C#
Место общения программистов C#
1731920646
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/73221415/c-sharp-unittests-mock-file-readallbytes-throws-system-io-filenotfoundexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия