繁体   English   中英

有没有办法在NSubstitute的类返回值上获取递归模拟

[英]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.

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