У меня есть консольное приложение. Net Core 2.0. Метод main () выглядит следующим образом:
public static async Task Main()
{
// create host builder
var hostBuilder = new HostBuilder();
var myApp = new MyApplication();
// Build host
var host = hostBuilder
.ConfigureHostConfiguration(myApp.ConfigureHostConfiguration)
.ConfigureServices(myApp.ConfigureServices)
.ConfigureLogging(myApp.ConfigureLogging)
.Build();
// Initialise
await myApp.InitialiseAppAsync(host);
// Run host
await host.RunAsync(CancellationToken.None);
}
Класс MyApplication устанавливает конфигурацию приложения в ConfigureHostConfiguration (), затем он настраивает зависимости в ConfigureServices (), некоторые из которых регистрируют обработчики сообщений для обработки speci c Типы сообщений от Azure Service Bus. Приложение должно выполнить некоторую инициализацию из InitialiseAppAsyn c (). Когда вызывается host.RunAsyn c (), консольное приложение запускается бесконечно, и обработчик сообщений получает выполнение, как только сообщение становится доступным на служебной шине Azure. Это все замечательно и отлично работает.
Я хотел бы создать новый проект под тем же решением, который содержит некоторые сквозные тесты (с использованием XUnit). Я хотел бы иметь возможность переопределить некоторые из зависимостей (с помощью тестовых макетов, используя NSubstitute), оставив другие зависимости, как они настроены в службе.
Я предполагаю, что мне нужно создать мой собственный HostBuilder в моем тесте, поэтому мне нужно будет иметь возможность настроить макеты до вызова host.RunAsyn c () в ходе теста.
Кто-нибудь знает, как я могу это сделать ? Или как лучше всего это делать?
В конечном счете, я пытаюсь переопределить некоторые (но не все) мои реальные зависимости в моем консольном приложении с помощью mocks, чтобы я мог проведите некоторые сквозные тесты.
Заранее спасибо