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

时间:2014-12-29 14:07:25

标签: c# func nsubstitute

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

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

然而这引发了一个例外:

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

1 个答案:

答案 0 :(得分:6)

尝试替换

spy.Invoke(Arg.Any<string>()).Received();

spy.Received().Invoke(Arg.Any<string>());

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

相关问题