我想检查是否已使用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.
答案 0 :(得分:6)
尝试替换
spy.Invoke(Arg.Any<string>()).Received();
与
spy.Received().Invoke(Arg.Any<string>());
如果您的生产代码通过spy.Invoke()
或spy()
调用func,则没有区别。但是,如果您的代码调用BeginInvoke
,则测试不会成功。但我认为这不应成为一个问题,因为如果需要Invoke
或BeginInvoke
的测试,您应事先知道。