Строгие подделки
FakeItEasy поддерживает строгие подделки (аналогично строгим издевательствам в Moq):
var foo = A.Fake<IFoo>(x => x.Strict());
В этот момент произойдет сбойсделан неожиданный вызов.
Полужесткие подделки
Также возможно настроить все вызовы напрямую :
A.CallTo(fakeShop).Throws(new Exception());
и объедините это с , определяя различные варианты поведения для последовательных вызовов , однако в этом случае нет никакой выгоды делать это по сравнению со строгой фальшивкой, поскольку строгая фальшивка будет давать лучшие сообщения при вызове ненастроенных методов,Таким образом, если вы хотите настроить некоторые методы так, чтобы они вызывались ограниченное количество раз, вы можете
var fakeShop = A.Fake<IShop>(options => options.Strict());
A.CallTo(() => fakeShop.GetTopSellingCandy()).Returns(lollipop).Once();
A.CallTo(() => fakeShop.Address).Returns("123 Fake Street").Once();
fakeShop.GetTopSellingCandy()
и fakeShop.Address
вызываться один раз, во второй раз это не удастся.
Произвольные проверки
Если вы хотите проверить, не выполняются ли вызовы в произвольных точках теста:
A.CallTo(fakeShop).MustNotHaveHappened();
Возможно, лучше отфильтроватьнекоторые методы, которые могут быть выполнены во время отладки:
A.CallTo(a)
.Where(call => call.Method.Name != "ToString")
.MustNotHaveHappened();
Вам не нужен неудачный тест, потому что вы зависали над переменной.