残念ですが、これはどのように動作するのか分かりませんので、共有するコードはあまりありません。テストプロジェクトからDryIocのコンクリート実装への依存関係を渡す方法
私はAPI.Testsというテストプロジェクトを持っています。私はAPIプロジェクト内でNewsControllerのテストを書いています。私はテストからAPIへの依存関係を一方向のリファレンスとしてどのように渡すのかよく分かりません。
NewsController
private IGetNews _getNews;
private IAddNews _addNews;
private ILoggingService _log;
public NewsController()
{
_getNews = RegisterDependencies.container.Resolve<IGetNews>();
_addNews = RegisterDependencies.container.Resolve<IAddNews>();
_log = RegisterDependencies.container.Resolve<ILoggingService>();
}
はい、これを行う古典的なやり方です。私が使っていたものですが、テストの実装以来、APITestsプロジェクト内の別の登録依存関係を使用するために、APIプロジェクトでDryIoCにどのように伝えますか?具体的なクラスはAPI.Testsプロジェクトにありますか? 私は、モックされる必要のないモックを渡すことなく、単に「DryIoc」の代わりに「IGetNewsのこの実装を解決してください」と伝えることができます。 –
これはWeb APIコントローラなので、空のコンストラクタを持つ必要があることにも言及しておきます。 –
@ChristopherJohnson、Web APIコントローラは空のコンストラクタ**を持つ必要はありません。コントローラを初期化しようとしたときに発生するエラーに対して、フレームワークがスローするデフォルトの誤解を招くエラーメッセージです。フレームワークを読んでおく必要があります。また、既に判明しているように、デザインの選択肢が悪いためにテストするのが難しいという設計をレビューする必要があります。 DIパターンと呼んでいるのは、実際にはサービスロケータのanit-patternです。 – Nkosi