Я хочу убедиться, что метод, который я тестирую, вызывает службу несколько раз с разными аргументами. У метода service есть обязательный и необязательный аргумент:
public void Foo(object o1, object[] o2 = null);
Я ожидаю, что Foo
будет вызван 2 раза, один раз без и один раз с необязательным параметром. Необязательный параметр должен соответствовать критерию. Чтобы проверить это, я использую MustHaveHappenedOnceExactly
от FakeItEasy:
A.CallTo(() => testee.Method(A<object>.That.IsNotNull(), A<object[]>.That.IsNull()))
.MustHaveHappenedOnceExactly().Then(
A.CallTo(() => testee.Method(A<object>.That.IsNotNull(), A<object[]>.That.Matches(p => p.Length == 2)))
.MustHaveHappenedOnceExactly());
Я получаю следующее исключение:
FakeItEasy.UserCallbackException: средство сопоставления аргументов
(p.Length> == 2)> вызвало исключение. Смотрите внутреннее исключение для деталей. ---> System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Я предполагаю, что MustHaveHappenedOnceExactly
проверяет все вызовы на Foo
с определенными совпадениями, и, таким образом, второе совпадение вызывает исключение, когда Foo вызывается без параметра. Как я могу избежать этого исключения и все же проверить, что Foo был вызван один раз с определенным аргументом?