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