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?)ツールを使用して、WSDL urlからインターフェイスを生成します:http:://somesite.com/wcf/RealService.svc?wsdl
。
次にService1.cs
ファイルを開き、IService1.cs
から継承させる代わりに、生成されたinterface
から継承させます。
次に、アプリケーションで実際のサービスを呼び出す代わりに、Service1
クラスを呼び出します。 Webサービスのモックはどのように機能しますか?
また、svcutilツールでinterface
を実際に生成する方法を理解する必要があります(WCFサービスにwsdl.exeを使用できないことを読んだことがありますか?)。したがって、その上でのヒントは大歓迎です!
触れるべき多くの領域は、あなたを正しい方向に向けようとします:
WCFサービスをテストする(入力を渡す、出力を確認する)場合は、Visual Studio GUIツールWCF Test Client
(MSDNの記事 ここ )。
WCFサービスをモックしたい場合(つまり、WCFサービスを使用するコンポーネントを単体テストする場合)、NMock2
これにより、サービスインターフェースをモックできます(関連するSO thread here )。外部フレームワークを使用したくない-しかし、これはより複雑です。
WCFサービスの単体テスト(サービス、ビジネス、データなどの単体テストの作成)を行う場合は、一般的なモックフレームワークを使用します(関連するSO thread here =)。
WCFサービスのプロキシを生成するには、予想どおりsvcutil.exeコマンドラインユーティリティ(MSDNの記事 here )を使用します。このユーティリティにはさまざまなオプション(言語、名前空間、設定ファイルなど)が付属しているため、注意が必要です。
お役に立てれば。
svcutil.exe(Visula Studioから:Add a Service Reference ...)を使用してプロキシを生成できます。これにより、クライアントプロキシとService Interfaceが生成されます。
サービスの例としてhttp :: //somesite.com/wcf/RealService.svc?wsdlを取得します:
サービスインターフェイス(IRealService)を実装するモッククラスを作成できます。
また、サービスを呼び出すときに、具体的なサービスクライアント(RealServiceClient)をインスタンス化する代わりに、アプリケーションでFactoryまたはIOCコンテナを使用できます。
この方法で、アプリケーション(またはモジュール/コンポーネント)が動作するインスタンスを決定できます:実行時の実際のサービス、テスト時のモック。