0
スタブを使用してC#コードのユニットテスト中にHTTPクライアントを模擬するにはどうすればよいですか?スタブを使用してC#でhttpclientをモックする方法
静的だけど仮想ではないhttpクライアントインスタンスを作成する方法があるので、私はMoqを使いたくありません。
コード:あなたは自分のIHttpClient
非静的を作ることができず、工場を取り除くのはなぜ
public static class HttpClientFactory
{
public static IHttpClient httpClient;
public static IHttpClient CreateHttpClient()
{
if(httpClient == null)
httpClient = new HttpClient();
return httpClient;
}
}
静的クラス/メソッドがよくユニットテストに向いていない(コンストラクタまたはプロパティで)それを注入し、その後、
IHttpClient
をあざけりとメソッドを実装します。これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のようです。あなたが達成しようとしている究極の目標は何ですか? – Nkosi静的なクラスとメソッドの問題は、それらを模擬実装で簡単に置き換えることができないことです。最初のリファクタは、工場を通常のクラスにし、必要なときにいつでも注入するインタフェースを実装し、そのインタフェースを模擬して偽のHTTPクライアントを取得することです。 – Alejandro