1

私はいくつかの WCF サービスに取り組んでおり、それらは Azure にデプロイされる予定です。そのため、統合テストの実行中にステージング領域への無駄なラウンドトリップを避けるために、できるだけ多くの単体テストをローカルで実行したいと考えています。サービスは CQRS パターンを使用し、次の方法ですべてを階層化しました。 - WCF サービスに依存関係を挿入するためのブートストラップ - 各サービス メソッドのコマンド - コマンドをインターセプトするコマンド ハンドラー これまでのところ、コマンドを完全に単体テストできます。 、ハンドラー、およびブートストラップ。私がまだ書く必要があるのは、このタイプのテストです:

[TestMethod]
public void Client_ReceiveValidCommand_WillExecute()
{
    var factory = new ChannelFactory<IDomainWriteService>("*");
    var service = factory.CreateChannel();
    var expectedCommand = BuildAddUsersCommand();
    service.AddUsers(expectedCommand);
}

問題は、このテスト が構成ファイルで有効なエンドポイントを装うことです。テスト フィットネスの開始中に IIS Express のようなものを開始し、チャネル ファクトリを IIS のこのインスタンスに接続する方法はありますか? サービスを展開して統合テストを実行できるステージング領域を作成できないため、可能な場合は単体テストの方法に従うことをお勧めします。

4

1 に答える 1

0

ここで興味深い記事を見つけました: http://www.reimers.dk/jacob-reimers-blog/testing-your-web-application-with-iis-express-and-unit-testsでテストをホストする方法を説明していますIIS Expressはもちろん、単体テスト内でIIS Express を実行します。このようにして、IIS Express の新しいインスタンスをその場で簡単に作成し、WCF サービスをホストし、単体テストを実行して、最後にすべてを破棄することができます。

于 2013-01-29T10:31:35.597 に答える