Я не думаю, что moq
предлагает это, если я не ошибаюсь.Проблема в том, что даже если вы правильно настроили Verifiable
для использования Verify
или если вы хотите использовать VerifyAll
, вы не можете указать ограничение Times
.
Подтвердить
paramList.ForEach(s => mock.Setup(m => m.DoSomething(s)).Verifiable());
mock.Object.DoSomething("one");
mock.Object.DoSomething("two");
mock.Object.DoSomething("three");
mock.Object.DoSomething("four");
mock.Verify(); //Cannot specify Times
VerifyAll
paramList.ForEach(s => mock.Setup(m => m.DoSomething(s)));
mock.Object.DoSomething("one");
mock.Object.DoSomething("two");
mock.Object.DoSomething("three");
mock.Object.DoSomething("four");
mock.VerifyAll(); //Cannot specify Times
Хотя я не вижу проблем с вашим подходом, я просто хочу добавить еще одну опцию.Вы можете избежать Verify
, используя функцию Capture.In
, что-то вроде этого:
//Arrange
var invocation = new List<string>();
mock.Setup(m => m.DoSomething(Capture.In(invocation)));
//Act
mock.Object.DoSomething("one");
mock.Object.DoSomething("two");
mock.Object.DoSomething("three");
mock.Object.DoSomething("four");
//Assert
CollectionAssert.AreEquivalent(paramList, invocation);