23

WCFサービスのテストクラスを作成したかったのです。「あざける」というのは正しい言葉だと思いますか?

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

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

と:

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

したがって、実際にプロジェクトにを追加する代わりにRealService.svc、プロジェクトにService Reference新しい空WCF Serviceを追加しただけService1です。

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

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

Service1次に、アプリケーションで実際のサービスを呼び出す代わりに、クラスを呼び出すだけです。それがWebサービスのモックの仕組みです。

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

4

2 に答える 2

20

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

  • WCFサービスをテスト(つまり、入力のパス、出力の検証)する場合は、Visual Studio GUIツールWCF Test Client(MSDNの記事はこちら)を使用してください。

  • WCFサービスをモックする場合(つまり、WCFサービスを使用するコンポーネントを単体テストする場合)、NMock2サービスインターフェイス(ここでは関連するSOスレッド)をモックできるようなモックフレームワークを使用します。外部フレームワークを使用したくない場合は、(インターフェイスを実装することで)モックを手動でコーディングすることもできますが、これはより複雑です。

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

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

お役に立てれば。

于 2013-03-01T10:14:28.537 に答える
3

svcutil.exeを使用してプロキシを生成できます(Visula Studioから:サービスリファレンスの追加...)。これにより、クライアントプロキシとサービスインターフェイスが生成されます。

たとえば、サービスhttp://somesite.com/wcf/RealService.svc?wsdlの場合、次のようになります。

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

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

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

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

于 2013-03-01T11:49:23.007 に答える