NCrunch генерирует System.IO.DirectoryNotFoundException при выполнении File.ReadAllText
У меня проблема с NCrunch, когда я получаю следующее исключение при тестировании метода, который пытается получить доступ к файловой системе.
System.IO.DirectoryNotFoundException
Could not find a part of the path 'C:\Users\shawn\AppData\Local\NCrunch\23344\21\EmailAPI.Tests\bin\Debug\netcoreapp2.0\Emails\Templates\BaseEmail.html'
Это код в проекте EmailAPI, где метод, который я пытаюсь протестировать, выполняет вызов для получения содержимого html-файла. Этот код отлично работает при запуске API, но когда здесь проходит модульный тест, возникает это исключение.
public void SendEmail(){
var template = System.IO.File.ReadAllText("Emails/Templates/BaseEmail.html")
}
Структура проекта EmailAPI:
-EmailAPI Project Root
-Emails
-Strategies
-BaseEmailStrategy <--- Class and method under test
-Templates
-BaseEmail.html <--- File read from ReadAllText
-EmailAPI.Tests Project Root
-Emails
-Strategies
-BaseEmailStrategyTests <-- Test class
Так что в тестируемом проекте, когда я делаю приведенный выше код, приложение, кажется, знает, что я ссылаюсь на этот файл из корня моего проекта. Когда проект модульного теста запускает код при вызове метода, он пытается найти путь к файлу из папки выходного бина сборки NCrunch. Кто-нибудь знает, как я могу заставить это работать?
Я провел некоторые исследования по использованию IHostingEnvironment и установке ContentRoot в корневой каталог проекта EmailAPI, но не уверен, как получить этот путь к каталогу относительно моего проекта EmailAPI.Tests. Я также изучил насмешку над файловой системой с помощью System.IO.Abstractions, но я стараюсь не передавать интерфейс файловой системы в конструктор (потому что я использую шаблон стратегии, который делает его немного грязным, и я хочу избежать изменений кода строго для целей тестирования.) Пока не повезло, хотя найти достойное решение.