在使用NuGet-NSubstitute 4.3.0和NSubstitute.Analizers.CSharp时,我正试图截获一个调用,如下所示。
_someMock = Substitute.For<IInterface>();
_someMock.ReceivedWithAnyArgs().ExtensionMethod(default);
此处更改了实际名称以便于说明。CCD_ 1是在CCD_ 2上定义的一个扩展方法。显然Nstitute.Analyszers.Sharp正在生成以下警告。
NS1001:无法截获成员扩展方法。仅接口成员和虚拟、重写和抽象成员可以拦截。
这是可以理解的,因为ExtensionMethod
实际上是一个扩展方法(而不是允许的类型之一(。
然而,令人惊讶的是,所需的呼叫完全按照预期被拦截。有什么想法吗?
终于回答了我自己的问题;上面给出的代码确实编译并执行了,但毕竟,它确实而不是拦截了对扩展方法的调用。总之,NSubstitute.Analyszers.Sharp发出的警告是正确的。无法拦截对扩展方法的调用。