如何检查是否已使用NSubstitute调用匿名函数?

Mar*_*ius 3 c# func nsubstitute

我想检查是否已使用NSubstitute调用匿名函数.类I中的方法有一个Func<>参数,我想确保调用(或不调用)此参数.我尝试了以下,但它似乎不起作用:

var spy = Substitute.For<Func<string, int>>();
MyClass.DoSomething(spy);
spy.Invoke(Arg.Any<string>()).Received();
Run Code Online (Sandbox Code Playgroud)

然而,这引发了一个例外:

NSubstitute.Exceptions.NullSubstituteReferenceException : NSubstitute extension methods like .Received can only be called on objects created using Substitute.For<T>() and related methods.
Run Code Online (Sandbox Code Playgroud)

khl*_*hlr 6

尝试更换

spy.Invoke(Arg.Any<string>()).Received();
Run Code Online (Sandbox Code Playgroud)

spy.Received().Invoke(Arg.Any<string>());
Run Code Online (Sandbox Code Playgroud)

如果您的生产代码通过spy.Invoke()或通过调用func没有区别spy().但是如果您的代码调用,测试将不会成功BeginInvoke.但我认为,不应该是一个问题,因为你应该事先知道,如果一个测试InvokeBeginInvoke需要.