[英]How to check properly that ILogger.LogCritical has been called with 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
,则测试将不会成功。 但我认为这应该不是问题,因为您应该事先知道是否需要对Invoke
或BeginInvoke
进行测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.