web-dev-qa-db-ja.com

WCF Webサービスをテストしますか?

WCFサービスのテストクラスを作成したかった。 「モッキング」はこれにふさわしい用語だと思いますか?

私は私がこれをしなければならないと思う方法が正しい方法であるかどうかは本当にわかりません。たとえば、WCFサービスへのURLが与えられました。

http:://somesite.com/wcf/RealService.svc

そして:

http:://somesite.com/wcf/RealService.svc?wsdl

したがって、実際にRealService.svcService Referenceとしてプロジェクトに追加する代わりに、WCF Serviceというプロジェクトに新しい空のService1を追加しました。

次に、wsdl.exe(またはsvcutil.exe?)ツールを使用して、WSDL urlからインターフェイスを生成します:http:://somesite.com/wcf/RealService.svc?wsdl

次にService1.csファイルを開き、IService1.csから継承させる代わりに、生成されたinterfaceから継承させます。

次に、アプリケーションで実際のサービスを呼び出す代わりに、Service1クラスを呼び出します。 Webサービスのモックはどのように機能しますか?

また、svcutilツールでinterfaceを実際に生成する方法を理解する必要があります(WCFサービスにwsdl.exeを使用できないことを読んだことがありますか?)。したがって、その上でのヒントは大歓迎です!

24
w00

触れるべき多くの領域は、あなたを正しい方向に向けようとします:

  • WCFサービスをテストする(入力を渡す、出力を確認する)場合は、Visual Studio GUIツールWCF Test Client(MSDNの記事 ここ )。

  • WCFサービスをモックしたい場合(つまり、WCFサービスを使用するコンポーネントを単体テストする場合)、NMock2これにより、サービスインターフェースをモックできます(関連するSO thread here )。外部フレームワークを使用したくない-しかし、これはより複雑です。

  • WCFサービスの単体テスト(サービス、ビジネス、データなどの単体テストの作成)を行う場合は、一般的なモックフレームワークを使用します(関連するSO thread here =)。

  • WCFサービスのプロキシを生成するには、予想どおりsvcutil.exeコマンドラインユーティリティ(MSDNの記事 here )を使用します。このユーティリティにはさまざまなオプション(言語、名前空間、設定ファイルなど)が付属しているため、注意が必要です。

お役に立てれば。

20
Channs

svcutil.exe(Visula Studioから:Add a Service Reference ...)を使用してプロキシを生成できます。これにより、クライアントプロキシとService Interfaceが生成されます。

サービスの例としてhttp :: //somesite.com/wcf/RealService.svc?wsdlを取得します:

  • IRealService(インターフェイス)
  • RealServiceClient(IRealServiceを実装し、System.ServiceModel.ClientBaseを拡張します)

サービスインターフェイス(IRealService)を実装するモッククラスを作成できます。

また、サービスを呼び出すときに、具体的なサービスクライアント(RealServiceClient)をインスタンス化する代わりに、アプリケーションでFactoryまたはIOCコンテナを使用できます。

この方法で、アプリケーション(またはモジュール/コンポーネント)が動作するインスタンスを決定できます:実行時の実際のサービス、テスト時のモック。

3
polkduran