Что такое хорошая практика для написания юнит-теста на .net core Ihostedservice? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть фоновая задача, запускаемая при запуске .net core 2.0, наследуется от backgroundservice, реализуя StartAsync, StopAsync и ExecuteAsync.Эта задача состоит в том, чтобы периодически обновлять некоторые данные в таблице базы данных на основе некоторой бизнес-логики.

Хотя я могу запускать backgroundtask как приложение и тестировать с использованием журналов, проверки БД и с помощью других инструментов, может ли модульное тестирование быть необходимым для тестирования backgroundtask?Если да, то как зарегистрировать задачу как службу с зависимостями и вызвать методы start и stop для подтверждения фактического значения по сравнению с ожидаемым?Оцените некоторые базовые примеры метода модульного тестирования при тестировании на основе таймера .net core ihostedservice backgroundtask.

Вот мой базовый тестовый запуск только для примера, но еще не завершенный.Сказав это, это всего лишь мысль, но не точный рабочий тест.Вот что нужно, чтобы помочь сообществу.Можно также добавить еще несколько утверждений, например, Assert.Verify ()?

  [Fact]
        public async void Run_background_task_success()
        {
            //Arrange
            IServiceCollection services = new ServiceCollection();

            services.AddHostedService<BackgroundManagerTask>();

            var serviceProvider = services.BuildServiceProvider();

            var service = serviceProvider.GetService<IHostedService>() as BackgroundManagerTask;

            var isExecuted = false;
            if(await service.StartAsync(CancellationToken.None))
{
isExecuted = true;
}

            await Task.Delay(10000);
            Assert.True(isExecuted);

            await service.StopAsync(CancellationToken.None);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...