繁体   English   中英

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

[英]How can I check if an anonymous function has been called with 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.

尝试更换

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM