Iformfile тестирование свойства contenttype с помощью xunit
Интересно, может ли кто-нибудь помочь!
Я пытаюсь создать модульный тест с издевательствами над объектом IFormFIle как и в приведенном ниже коде
[Fact] public void HasCorrectImageType() { var formFile = new Mock<IFormFile>(); var PhysicalFile = new FileInfo(@"./Images/Dart 1.jpg"); var memory = new MemoryStream(); var writer = new StreamWriter(memory); writer.Write(PhysicalFile.OpenRead()); writer.Flush(); memory.Position = 0; var fileName = PhysicalFile.Name; formFile.Setup(_ => _.FileName).Returns(fileName); formFile.Setup(_ => _.Length).Returns(memory.Length); formFile.Setup(_ => _.OpenReadStream()).Returns(memory); formFile.Verify(); var controller = new ScanController(); var file = formFile.Object; var result = controller.Scan(file); Assert.IsAssignableFrom<OkObjectResult>(result); }
Теперь, когда я тестирую это, он попадает на мой контроллер без каких-либо проблем, но мне нужно проверить, чтобы убедиться, что файл является "image/jpg" с помощью
ContentType
недвижимость в городе IFormFile
параметр в моем методе контроллера, как я хочу, чтобы затем передать его в OCR Framework.[HttpPost] [ActionName("Scan File")] [ProducesResponseType(200)] public IActionResult Scan(IFormFile fileInfo) { if (fileInfo == null) return BadRequest(); if (fileInfo.ContentType == "image/jpg") return BadRequest(); return Ok(); }
При пошаговом выполнении этого кода свойство ContentType всегда возвращает null при вызове через тесты XUnit.
Что я уже пробовал:
Если я попробую это сделать в Postman или Fiddler, вызов всегда будет корректно работать с текущей кодовой базой.
Я попытался установить свойство в "image/jpg", но это свойство является только геттером
Теперь я застрял / чешу голову.
Bohdan Stupak
У меня определенно нет ответа на ваш вопрос, но мне интересно, есть ли шанс, что вы могли бы написать тест уровня интеграции, просто напрямую загружая различные файлы, проверяя коды ответов и очищая вместо модульного тестирования эту функциональность.
В любом случае, хорошего вам дня.
Simon_Whale
Хорошая мысль, спасибо, я посмотрю на насмешку (извините за выбор слов) вместо этого