Что такое эквивалент FakeItEasy метода Moq VerifyNoOtherCalls () - PullRequest
0 голосов
/ 26 октября 2018

Я в настоящее время пользователь Moq, и я исследую другие фальшивые рамки.

При модульном тестировании я часто вызываю _mock.VerifyNoOtherCalls (), так что я могу быть уверен, что нет никаких неожиданных взаимодействий, кроме тех, которые я уже проверил.

Я искал документы FakeItEasy ине могу найти эквивалентный вариант в их рамках.Кто-нибудь может подсказать, как мне это сделать?

1 Ответ

0 голосов
/ 26 октября 2018

Строгие подделки

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();

Вам не нужен неудачный тест, потому что вы зависали над переменной.

...