2012-03-06 2 views
11

Attualmente sto valutando ServiceStack (per creare servizi basati sul riposo in .Net). Una delle aree di interesse è il lato di prova. Il mio servizio di riposo avrà una serie di servizi di app iniettati in (attualmente utilizzando Autofac). Quello di cui ho bisogno è un meccanismo per testare il livello di riposo e definire le aspettative sul mio livello di app (tramite MOQ), quindi non sto facendo test di integrazione ma testare questo livello con un'unità?Service stack e Mocking, qualsiasi tutorial?

Qualche idea su come fare questo?

risposta

12

A ServiceStack Service è come qualsiasi normale classe di servizio C# e può essere simulato esattamente nello stesso modo di qualsiasi altra classe. La dipendenza minima per un ServiceStack Service sta implementando l'indicatore di interfaccia senza dipendenza IService e in cui qualsiasi servizio accetta solo un DTO di richiesta e restituisce qualsiasi oggetto.

One-way to Unit test I servizi ServiceStack utilizzano DirectServiceClient come seen in this example, un vantaggio di questo è che consente di utilizzare lo stesso Test unità come test di integrazione, testando tutti i diversi endpoint XML, JSON, JSV e SOAP .

Altrimenti si può unit test e modelli come qualsiasi altra classe, per esempio:

var service = new TestService { 
    MyDependency = new Mock<IMyDependency>().Object 
}; 
var response = service.Get(new Test { Id = 1 }); 
Assert.That(response.Result, Is.EqualTo("Hello, 1")); 
+0

@Thanks. Penso che faremo il servicestack per il nostro nuovo progetto. Ottimo lavoro. –

+2

Quando eseguo il mock dei servizi in questo modo, gli attributi del filtro non sembrano essere attivati, è il comportamento previsto? – Shagglez

+0

Quando prendi in giro "IService " lo stai usando per isolare le dipendenze. Tutti gli attributi del filtro dipendono da un maggior numero di stack in esecuzione (ad esempio, configurazione/configurazione/inizializzazione specificati nella classe AppHost). Se è necessario testare il codice negli attributi del filtro, le classi di attributi dovrebbero essere testate in modo indipendente. – CodeMonkeyKing