私は Moq を使用しており、HttpClient をスタブ化できます。これはRhino Mockでも同じだと思います(自分で試したことはありません)。HttpClient をスタブするだけの場合は、以下のコードが機能するはずです。
var stubHttpClient = new Mock<HttpClient>();
ValuesController controller = new ValuesController(stubHttpClient.Object);
私が間違っている場合は、私を修正してください。ここで言及しているのは、HttpClient 内のメンバーをスタブ化することだと思います。
最も一般的な分離/モック オブジェクト フレームワークでは、非仮想メンバーでのスタブ/セットアップは許可されません。たとえば、以下のコードは例外をスローします。
stubHttpClient.Setup(x => x.BaseAddress).Returns(new Uri("some_uri");
また、多くの HttpClient メンバーをラップするため、ラッパーの作成を避けたいとも述べました。多くのメソッドをラップする必要がある理由は明確ではありませんが、必要なメソッドだけを簡単にラップできます。
例えば :
public interface IHttpClientWrapper { Uri BaseAddress { get; } }
public class HttpClientWrapper : IHttpClientWrapper
{
readonly HttpClient client;
public HttpClientWrapper() {
client = new HttpClient();
}
public Uri BaseAddress {
get
{
return client.BaseAddress;
}
}
}
あなたに役立つと思われる他のオプション (たくさんの例があるので、コードは書きません) Microsoft Moles Framework
http://research.microsoft.com/en-us/projects/moles/
Microsoft Fakes: ( VS2012 Ultimate を使用している場合)
http://msdn.microsoft.com/en-us/library/hh549175.aspx