NSubstitute はそのドキュメントでこれを言っています:
インターフェイスを返すメソッド [...] は、自動的に代替物自体を返します。
通常はそれで十分です。ただし、これを行うと:
試験方法:
IUnityContainer unity = Substitute.For<IUnityContainer>();
MyMethod(unity);
実際の方法:
public void MyMethod(IUnityContainer container)
{
this.container = container;
myObject = container.Resolve<ISomeObject>();
myObject.CallSomeMethod();
}
Resolve メソッドはクラスを返します。だから嘲笑されない。つまり、 myObject で null を取得し、CallSomeMethod
;を呼び出すと null 参照例外が発生します。
モックであるクラスを返すことができればいいのですが(つまり、そのインターフェイスを具体的にオーバーライドしていない限り)。
NSubstituteを使用してこれを取得する方法はありますか?