Frage

Ich habe ein OLE-COM-Objekt, das einen Wrapper zu schreiben versucht, für, habe ich beschlossen, beginnen TDD zu verwenden, um den Code für sie zu schreiben, wie ich glaube, dass es mir ein besseres Gefühl für die Richtung geben wird, was ich versuche, schreiben. Das COM-Objekt verfügt über eine Schnittstelle wie folgt:

Interface Mapinfo
    Sub [Do](ByVal cmd As String)
    Function Eval(ByVal cmd As String) As String
End Interface

Die [Do] Befehl würde somthing wie das folgende

Mapinfo.Do("OpenTable("""C:\Temp\MyTable.TAB""")")

Jetzt versuche ich, einen Wrapper zu schreiben, so gibt es eine Funktion ist wie folgt:

Mapinfo.OpenTable("C:\Temp\MyTable.TAB")

Jetzt ist mein Hauptproblem, das ich habe, ist, dass jedes Mal, ich will einen neuen Test und einen Code schreiben, ich muß eine Instanz des OLE-Objekts erstellen, für die Anwendung warten, um zu starten (30 Sekunden +), Test meine kleine Funktion, in der Nähe und verfügen OLE-Objekt, Code ändern und alles wieder laufen.

Meine Frage ist: Gibt es eine bessere Art und Weise all dies mit heraus zu tun haben, den OLE-App jedes Mal zu starten? Ich habe über Mock-Objekte gehört, aber nicht wirklich in sie sah viel, würden sie mir helfen hier? Wenn ja, wie?

EDIT: Ich habe jetzt gemerkt, dass ich ein Mock-Objekt für Mapinfo machen muß, meine Frage ist, wie kann ich ein Make mache ein Mock-Objekt, das verschiedene forma Strings nehmen kann? Wie wird dies helfen Sie mir bestätigen, dass der Code in meinem Wrapper korrekt ist?

War es hilfreich?

Lösung

Ja, würden Mock-Objekte helfen. Im Wesentlichen Sie ein gefälschtes Mapinfo-Objekt erstellen, indem Sie die Mapinfo Schnittstelle spöttischen (Sie sollen umbenannt werden, dass IMapInfo, btw).

Sie dann anweisen, dass Mock, was zu erwarten nennt, und welche Ergebnisse zurückzukehren (falls zutreffend). Sie können auch Tests erstellen, wo die Schein Ausnahmen oder tut andere Dinge wirft, die schwer mit dem realen Objekt aufzurufen.

Die beiden großen (und kostenlos) .NET spöttischen Frameworks sind MoQ und Rhino Mocks . Rhino ist reifer und hat mehr Möglichkeiten, von Mocks konfigurieren. MoQ ist der Neuling und hat einen kleineren Featureset und weniger Möglichkeiten der Erwartungen als Rhino Einstellung.

Ich persönlich denke, MoQ ist besser für den Neuling zu verspotten. Sein relativ leicht zu verstehen, alle Unterlagen aus dem aktuellen Release es relevant ist (Suche nach Rhino-Tutorials und Sie Junk von Jahren erhalten vor, die nicht mehr gilt), und es funktioniert gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top