2013-02-15 7 views
9

Ich bin sehr neu zu ServiceStack. Bis jetzt hatte ich Glück, eine grundlegende API zu bekommen und zu arbeiten (das Northwind Beispiel war besonders hilfreich für mich). Ich stolpere jedoch, wenn ich Unit- und Integrationstests erstellen möchte.Wie schreibe ich Einheit/Integration Tests in ServiceStack

Ich habe kürzlich einen wichtigen Hinweis von einem anderen ServiceStack-Benutzer gefunden, der einige (möglicherweise inkorrekte) Beispiele für Einheiten- und Integrationstests illustriert hat, aber ich kann diese nicht finden. Hier

ist die Referenz, die ich verwendet haben: https://github.com/ServiceStack/ServiceStack/issues/435

Hier ist mein Versuch einer Basiseinheit Test, mit meist geliehenen Code aus dem anderen Benutzer Kern: https://gist.github.com/anonymous/4957788

Wenn ich versuche zu laufen Im Testfall in HelloWorldTest wird eine System.NotImplementedException ausgelöst, die besagt, dass der Dienst "HelloWorldName" nicht aufgelöst werden konnte.

Dies ist verwirrend für mich, da ich es eine Anfrage DTO, kein Service übergeben, die mit der ExecuteService() -Methode, die ich anrufe, zu sein scheint. Aber die Ausnahme schlägt vor, dass ServiceStack mein DTO als einen Dienst behandelt.

Könnte mich jemand zu einem guten, kanonischen Beispiel schicken, wie man Unit- und Integrationstests für ServiceStack korrekt schreibt? Ich sollte erwähnen, dass ich auch neu in der .NET-Entwicklung bin, also scheint vielleicht meine Ignoranz durch.

Vielen Dank.

+0

Sehen Sie diese früher [Antwort für ein Beispiel einer Einheit und Integrationstest] (http://stackoverflow.com/a/14791657/85785) . – mythz

+0

Danke, Mythos. Eine Frage zu Integrationstests. Bei einem End-to-End-Integrationstest muss der Dienst tatsächlich ausgeführt werden, um eine Verbindung mit einer JsonServiceClient-Instanz herzustellen. Wie gehe ich darüber? –

+0

zur Verfügung gestellt einige Links in der Antwort unten. – mythz

Antwort

5

Betrachten Sie die testing docs und this earlier question und antworten Sie für eine simple example on how to create a Unit and Integration test.

Auch die meisten Tests in ServiceStack.WebHost.Endpoints.Tests sind eigenständige Integrationstests, die nur einen selbst gehosteten HttpListener AppHost verwenden. Einige Beispiele:

+0

So wie ich es verstehe, kann ich meinen vorhandenen AppHost nicht verwenden, wenn ich Integrationstests ausführe, sondern stattdessen einen neuen AppHost von AppHostHttpListenerBase erstellen. Bedeutet das, dass ich meine vorhandene Configure() -Methode von meinem primären AppHost in diesen neuen AppHost kopieren muss, um sicherzustellen, dass alle meine DB/Redis-Verbindungen korrekt initialisiert sind? –

+0

Nun, Sie können immer Integrationstests gegen eine dev-Instanz der eigenen ASP.NET-Webanwendung ausführen, aber ansonsten, wenn Sie nur eine Teilmenge Ihres Dienstes testen möchten, machen Sie einen bestimmten AppHost mit nur den Dingen, die Sie testen möchten. Andernfalls bleiben Sie bei den Unit-Testing-Services isoliert und machen nur das, was Sie brauchen. – mythz

+0

Danke, Mythos. Das hilft, Dinge für mich zu klären, Prost. –

Verwandte Themen