Модульный тест IBackgroundJobClient.ScheduleC#

Место общения программистов C#
Anonymous
Модульный тест IBackgroundJobClient.Schedule

Сообщение Anonymous »

Я использую Hangfire для планирования некоторых заданий. У всех моих заданий есть запланированная дата, поэтому я использую метод статического расширения расписания

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

public static string Schedule([NotNull] this IBackgroundJobClient client, [InstantHandle][NotNull] Expression methodCall, DateTimeOffset enqueueAt);
Я хочу провести модульное тестирование своих методов, чтобы проверить, действительно ли срабатывает Hangfire.

Для этого я ознакомился с документацией Hangfire по модульному тестированию (https://docs.hangfire.io/en/latest/back ... tests.html), в которой предлагается издеваться над IBackgroundJobClient и проверять в единственном открытом методе Create:

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

string Create([NotNull] Job job, [NotNull] IState state);
Но я вижу, что для вызовов расписания это не вызывается, вместо этого вызывается другая перегрузка, которая не является общедоступной, поэтому я получаю следующую ошибку:

р>

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

Message: Moq.MockException :
Expected invocation on the mock at least once, but was never performed: x => x.Create(It.IsAny(), It.IsAny())
No setups configured.

Performed invocations:
IBackgroundJobClient.Create(JobService.TaskFunction, ScheduledState)
Тем не менее, я попытался использовать метод Enqueue, и, похоже, он работает с макетом. Но мне нужно использовать Расписание.

Другим вариантом может быть утверждение о перегрузке, которую он фактически вызывает.

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

public static string Create([NotNull] this IBackgroundJobClient client, [InstantHandle][NotNull] Expression methodCall, [NotNull] IState state);
Но поскольку это метод расширения, он не подходит для Moq.

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

Message: System.NotSupportedException : Invalid verify on an extension method: x => x.Create(It.IsAny(), It.IsAny())
Итак, как я могу протестировать метод Hangfire for Schedule?

Подробнее здесь: https://stackoverflow.com/questions/556 ... t-schedule

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