2012-06-19 3 views
18

Ich habe Code, der einige RSS-Feeds herunterlädt.Benötigen Sie einen Ratschlag, wenn Sie versuchen, einen .NET WebClient oder einen gleichwertigen Code zu erstellen

Ich habe WebClient oder Argotic.Syndication.RssFeed Bibliotheken verwendet.

Aber diese sind nicht mockable :(

ich auf jeden Fall will nicht dem realen RSS-Feed jedes Mal, wenn ich das Gerät Test laufen zu schlagen.

Hat jemand irgendwelche Vorschläge, was ich kann tun?

Benötige ich einen bösen Wrapper erstellen? Wenn ja .. Vorschläge dazu?

Antwort

16

Ich gehe für das Erstellen eines Wrappers für jede externe Abhängigkeit (wenn es praktisch ist). Daher sollte jede Interaktion mit dem Dateisystem/einem Webservice/einer Datenbank nur über eine Schnittstelle erfolgen, was zu mehr testbarem Code führt. Eine andere Lösung ist natürlich (wie immer) Typemock Isolator.

19

Hat jemand irgendwelche Vorschläge, was ich tun kann?

Zusammenfassung der eigentliche HTTP-Aufruf hinter einer Schnittstelle. Schreiben Sie dann eine Implementierung dieser Schnittstelle mit dem WebClient. Nun nehme deine Hauptklasse diese Schnittstelle als Abhängigkeit. Sie könnten diese Schnittstelle im Komponententest überspie- len und Ihr Dependency-Injection-Framework konfigurieren, um die korrekte Implementierung zur Laufzeit zu injizieren.

+6

Stimmen Sie mit Ihnen überein. Beispiel: [Mocking System.Net.WebClient] (http://brunov.info/blog/2013/07/30/tdd-mocking-system-net-webclient/). –