コンストラクターインジェクションを介してDIの代わりにIoCコンテナーを使用しています。コンストラクターインジェクションの代わりにIoCコンテナーを使用している理由を尋ねる人もいるかもしれません。ここに記載されている理由により、単純なDIコードではなくIoCコンテナーが必要なのはなぜですか?。ただし、サービスの単体テストを作成するのは難しいと感じています。コンストラクタインジェクション(難問)を使用していないため、実行時にサービスで使用されるリポジトリをモックする方法がわかりません。誰かが解決策を持っていますか?
例えば:
public class SomeService
{
private ISomeServiceRepository someServiceRepository;
public GetSomeThing()
{
//how do I mock this repository in my unit test
someServiceRepository = IoC.Resolve<ISomeServiceRepository>();
someData = someServiceRepository.getData();
someOtherService = new SomeOtherService();
someThing = someOtherService.GetSomeThing();
return FigureOutSomeThingElse(someData, someThing);
}
public FigureOutSomeThingElse(someData, someThing)
{
//do some figuring
return somethingElse;
}
}
public class SomeOtherService
{
private ISomeServiceRepository someOtherServiceRepository;
public GetSomeThing()
{
//how do I mock this repository in my unit test
someOtherServiceRepository = IoC.Resolve<ISomeOtherServiceRepository>();
var someData = someOtherServiceRepository.getData();
return someData;
}
}