强制NSubstitute为每个调用抛出异常

时间:2019-04-16 15:43:37

标签: c# unit-testing nsubstitute

我正在使用NSubsitute模拟我的被测试方法使用的类。我想确保我的方法不会引发由其依赖关系引起的异常。

是否有一种方法可以强制模拟抛出异常,无论调用哪种方法?

我知道,如果将调用特定方法,我可以“准备”该模拟程序以引发异常。但是然后,我还需要检查是否完全调用了此准备好的方法,以防止其他人在不更改单元测试的情况下更改代码。但这也意味着开始测试我不想做的算法。

编辑:因为我试图从 RestSharp 模拟 IRestClient ,所以我发现至少有一种方法可以为每个调用抛出异常将返回 Task -这对于我的用例就足够了。也许我的问题不够具体,确实暗示了很多错误的解决方案。

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

1 个答案:

答案 0 :(得分:1)

NSubstitute不支持此功能。

为此手动创建一个测试重复可能会更容易。如果您使用的是VS,则可以generate a sub-type that defaults to all members throwing NotImplementedException。 (R#和Rider提供了类似的选项。)