我正在使用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"));
答案 0 :(得分:1)
NSubstitute不支持此功能。
为此手动创建一个测试重复可能会更容易。如果您使用的是VS,则可以generate a sub-type that defaults to all members throwing NotImplementedException。 (R#和Rider提供了类似的选项。)