Заставить NSubstitute генерировать исключения для каждого вызова - PullRequest
0 голосов
/ 16 апреля 2019

Я использую NSubsitute для макета класса, который использует мой тестируемый метод.Я хочу убедиться, что мой метод не генерирует исключения, вызванные его зависимостями.

Есть ли способ заставить mocks генерировать исключение, независимо от того, какой из его методов вызывается?

Я знаю, я могу «подготовить» макет для выдачи исключения, если будет вызван определенный метод.Но тогда мне также нужно проверить, был ли вообще вызван этот подготовленный метод, чтобы другие не могли изменить код без изменения модульного теста.Но это также означало бы начать тестирование алгоритма, который я не хочу делать.

Редактировать: Поскольку я пытаюсь смоделировать IRestClient из RestSharp Я нашел по крайней мере способ генерировать исключения для каждого вызова, которыйвернет Task - этого достаточно для моего варианта использования.Возможно, мой вопрос не был достаточно конкретным и означал неправильное решение.

        var restClient = Substitute.For<IRestClient>();
        restClient.ReturnsForAll<Task<IRestResponse>>(t => throw new Exception("something did go wrong with the web api call"));

1 Ответ

1 голос
/ 18 апреля 2019

Это не поддерживается NSubstitute.

Для этого может быть проще вручную создать двойной тест.Если вы используете VS, он может генерировать подтип, который по умолчанию для всех членов выдает исключение NotImplementedException .(R # и Rider предоставляют аналогичные опции.)

...