Я уверен, что синтаксис It.IsAny<>()
должен использоваться в рамках фиктивного объекта. В этом случае, когда вы используете Setup
и фиктивные аргументы напрямую. Это потому, что фиктивный объект находится в режиме записи, собирая значения, которые вы передаете в аргументы, так что
mock.Setup(x => x.Foo(It.IsAny<Bar>()));
будет обрабатывать аргументы при выполнении строки установки.
Однако в вашем примере вы пытаетесь использовать It.IsAny<>()
из делегата для проверки аргумента, переданного в совпадениях. Когда это происходит, имитация не записи, а в процессе использования в результате тестируемого объекта (что намного позже).
Таким образом, someValue == It.IsAny<DateTime>()
не может получить значение true, поскольку возвращение метода IsAny
должно возвращать совпадающее значение, чтобы оно было истинным. Я ожидаю, что It.IsAny<int>()
также не работает.
Мое предложение заключается в том, что вам нужно будет либо указать точные значения, либо в этом случае сопоставить диапазон дат
&& IsInRange(DateTime.MinValue, DateTime.MaxValue, task_queue.TimeQueued)
, где IsInRange
просто еще один метод проверки значения между 2 мин и макс. Границами.