[英]Is there a way to get recursive mocks on a class return value with NSubstitute
NSubstitute在其文档中说:
返回接口[...]的方法将自动返回替换。
这通常足够了。 但是,当我这样做时:
测试方法:
IUnityContainer unity = Substitute.For<IUnityContainer>();
MyMethod(unity);
实际方法:
public void MyMethod(IUnityContainer container)
{
this.container = container;
myObject = container.Resolve<ISomeObject>();
myObject.CallSomeMethod();
}
Resolve方法返回一个类。 所以它没有被嘲笑。 这意味着当我调用CallSomeMethod
时,myObject中的null和null引用异常;
如果我能得到一个返回的类,那将是很好的(除非我特别重写了该接口)。
有没有办法使用NSubstitute来获得这个?
如果ISomeObject
是一个接口,这应该可以正常工作。 如果要获取自动替换类,则该类需要具有默认构造函数,并将其所有公共成员声明为虚拟成员。
以下测试通过我:
public interface IFactory { T Resolve<T>(); }
public interface ISomeObject { void CallSomeMethod(); }
public class Tests
{
[Test]
public void Example()
{
var factory = Substitute.For<IFactory>();
MyMethod(factory);
}
public void MyMethod(IFactory container)
{
var myObject = container.Resolve<ISomeObject>();
myObject.CallSomeMethod();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.