Проверьте BackgroundJob.Delete в Hangfire при модульном тестировании mstest.C#

Место общения программистов C#
Ответить
Anonymous
 Проверьте BackgroundJob.Delete в Hangfire при модульном тестировании mstest.

Сообщение Anonymous »

У меня есть метод CancelScheduledJob, который принимает идентификатор фонового задания и использует JobStorage для получения этого идентификатора и отмены соответствующего задания зависания:

Код: Выделить всё

var mon = JobStorage.Current.GetMonitoringApi();
var scheduledJobs = mon.ScheduledJobs(0, int.MaxValue);
var jobsToDelete = scheduledJobs.Where(job => job.Value.Job?.Args?.Any(arg => arg is Guid guid && guid == id) == true).ToList();

jobsToDelete?.ForEach(job => _backgroundJobClient.Delete(job.Key));
Проверка метода Enqueue() или Schedule() возможна путем проверки метода Create, вызванного в макете backgroundJobClient, например здесь:

Код: Выделить всё

_backgroundJobClientMock.Verify(x => x.Create(
It.Is(job => job.Method.Name == "Run" && Guid.Parse(job.Args[0].ToString()) == input),
It.IsAny()));
Но как мне проверить метод удаления? Я уже издеваюсь над JobStorage, но не могу найти способ проверить метод Delete(). На данный момент у меня есть это:

Код: Выделить всё

_backgroundJobClientMock.Verify(
x => x.Delete(It.Is(jobId => jobId == "job1")),
Times.Once
);
Но я сталкиваюсь с распространенной проблемой: удаление является методом расширения и не может использоваться в выражении настройки/проверки.

Подробнее здесь: https://stackoverflow.com/questions/793 ... it-testing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»