MVC プロジェクトから REST サービスへの呼び出しを抽象化するために使用するサービス マネージャー クラスがあります。マネージャー クラスが行うことは、(RestSharp を使用して) Rest 呼び出しをセットアップし、サービス データを MVC アプリケーションに返すことだけです。
そのため、最初はそのような些細なクラスをテストしないことを考えていましたが、テストによって、より複雑になる可能性のある将来の変更を防ぐことができると判断しました。
しかし、ここに私のジレンマがあります。単独でテストできるようにするには、どこまで抽象化する必要がありますか?
そのため、RestClient が MVC によってマネージャー クラスに注入されています。MVC インジェクターにベース URL を設定させています。これはすべて問題ありませんが、ここに私が持っている質問があります:
- メソッド呼び出しの場合、メソッドにパラメーター (userId) と IRestRequest を取り込ませる必要がありますか?
- これに関する私の問題は、インターフェースに両方のパラメーターを含める必要があるため、突然、汎用サービスマネージャーが REST 固有になることです。
- IRestRequest をメソッドに挿入せず、実装に作成させた場合、これは無視されるため、これは問題ありませんか? テストされるメイン メソッドは RestClient.Execute であり、スタブ化され、実際の RestRequest を気にしません。
- 実際、これは実装の一部であるため、適切な RestRequest オブジェクトで Execute メソッドが送信されていることをモックして確認できますか?
- または、IRestRequest を注入するのではなく、代わりに IRequestResolver をコンストラクターに注入する必要がありますか? 次に、メソッド呼び出しで、メソッドを表す文字列を受け取る IRequestResolver を使用できます。これは、RestRequest パラメーターを把握し、メソッドに適切に入力された RestRequest オブジェクトを返すために使用されますか?
- または、基本的に最初の箇条書きの下にサブ箇条書きを作成し、具体的な実装を使用する必要があります。
- 私が見逃している他のオプションはありますか?
テストされている実際のソリューションになると、4番目の箇条書きに傾いていますか?
私のジレンマを解決するために、さらに詳細が必要な場合はお知らせください。