Ich habe einen Dienst, der Microsoft.Net.Http
verwendet, um einige Json
Daten abzurufen. Groß!Wie kann man in einem .NET Test einen verspotteten HttpClient übergeben?
Natürlich möchte ich nicht, dass mein Komponententest den tatsächlichen Server trifft (sonst ist das ein Integrationstest).
Hier ist mein Service Ctor (die Dependency Injection verwendet ...)
public Foo(string name, HttpClient httpClient = null)
{
...
}
Ich bin nicht sicher, wie ich das mit verspotten kann ... sagen .. Moq
oder FakeItEasy
.
Ich möchte sicherstellen, dass, wenn mein Service ruft GetAsync
oder PostAsync
.. dann kann ich diese Anrufe fälschen.
Irgendwelche Vorschläge, wie ich das tun kann?
Ich bin -hoping- brauche ich nicht zu meinem eigenen Wrapper zu machen .. denn das ist Mist :(Microsoft kann nicht ein Versehen mit diesem gemacht hat, nicht wahr?
(ja, es ist leicht zu mache Wrapper .. ich habe sie schon mal gemacht ... aber das ist der Punkt!)
_ "Ich bin -Hoping- Ich brauche nicht meinen eigenen Wrapper" _ - Wie viele der 'HttpClient' Methoden und Eigenschaften verwenden Sie? Es kann sich in der Regel als nützlich erweisen, eine Schnittstelle für diese zu erstellen, die Sie dann vortäuschen können. – CodeCaster
(Wie ich im OP erwähnt) Einverstanden - es ist einfach und einfach ... aber ich hätte aber, dass ich nicht müsste? Das ist etwas, das Kern sein sollte. Ist das meine einzige Option? –
Soweit ich weiß, könnten Sie diese Anrufe stubben, wenn sie virtuell wären. Da sie nicht sind, würde ich annehmen, dass Sie einen Wrapper schreiben müssen (was der sauberere Weg ist). – ElGauchooo