Ich verwende Moq und ich kann den HttpClient ausblenden. Ich denke, dies das gleiche für Rhino Mock (Ich habe nicht versucht, von mir). Wenn Sie nur den HttpClient stub wollen, sollte der folgende Code funktionieren:
var stubHttpClient = new Mock<HttpClient>();
ValuesController controller = new ValuesController(stubHttpClient.Object);
Bitte korrigieren Sie mich, wenn ich falsch liege. Ich vermute, Sie beziehen sich auf hier ist, dass Stubbing aus Mitglieder innerhalb HttpClient.
Die meisten populären Isolations-/Mock-Objekt-Frameworks erlauben kein Stub/Setup auf nicht virtuelle Mitglieder Zum Beispiel löst der folgende Code eine Ausnahme aus
stubHttpClient.Setup(x => x.BaseAddress).Returns(new Uri("some_uri");
Sie haben auch erwähnt, dass Sie vermeiden möchten, einen Wrapper zu erstellen, weil Sie viele HttpClient-Mitglieder einpacken würden. Nicht klar, warum Sie brauchen, um viele Methoden zu wickeln, aber Sie können leicht wickeln nur die Methoden, die Sie benötigen.
Zum Beispiel:
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;
}
}
}
Die anderen Optionen, von denen ich denke, dass sie für Sie von Vorteil sein könnten (es gibt viele Beispiele, daher werde ich den Code nicht schreiben) Microsoft Moles Framework http://research.microsoft.com/en-us/projects/moles/ Microsoft Fakes: (wenn Sie VS2012 Ultimate verwenden) http://msdn.microsoft.com/en-us/library/hh549175.aspx