11

現在、ServiceStack を評価しています (.Net で REST ベースのサービスを作成するため)。関心のある分野の 1 つは、テスト側です。私の休息サービスには、多数のアプリ サービスが注入されます (現在 Autofac を使用しています)。私が必要としているのは、残りのレイヤーをテストし、(MOQ を介して) アプリ レイヤーでの期待を定義するメカニズムです。そのため、統合テストではなく、このレイヤーの単体テストを行っていますか?

これを行う方法についてのアイデアはありますか?

4

1 に答える 1

12

ServiceStack サービスは、通常のC# サービス クラスとまったく同じであり、他のクラスとまったく同じ方法でモックできます。ServiceStack サービスの最小の依存関係は、依存関係のないIServiceインターフェイス マーカーを実装することであり、どのサービスもリクエスト DTO を受け入れるだけで、任意のオブジェクトを返します。

ServiceStack サービスを単体テストする 1 つの方法は、この例に示すように DirectServiceClient を使用することです。これの利点は、同じ単体テストを統合テストとして使用できることです。つまり、さまざまな XML、JSON、JSV、および SOAP エンドポイントをすべてテストします。

それ以外の場合は、他のクラスと同様に単体テストとモックを作成できます。たとえば、次のようになります。

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"));
于 2012-03-06T16:25:49.583 に答える