簡體   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