1

OperationContext のデータに依存する WCF サービスの単体テストをサポートするために、WCFMock を検討しています。

私がそれを正しく理解していれば、サービスは OperationContextWrapper のインスタンスにマップされた IOperationContext のインスタンスを受け取るはずです。

OperationContextWrapper には、OperationContext (テストに使用されるコンストラクター) のインスタンスを取るコンストラクター オーバーロードがあります。または、何も渡されない場合は、デフォルトで OperationContext.Current になります (これは、実際の運用中に発生するパスです)。

IncomingMessageHeaders および OutgoingMessageHeaders コレクションを検査/追加できる IOperationContext のモッキングの例は見つかりませんでした。

誰かがこれの例を持っていますか?

WCFMock が 2009 年に作成されたことに気付きました。これは今でも Operation コンテキストをモックする最適な方法ですか?

4

3 に答える 3

1

SetupGet を使用して必要なプロパティ値を返す

    var mockContext = new Mock { DefaultValue = DefaultValue.Mock };
    var headers = new MessageHeaders(MessageVersion.Default);
    headers.Add(MessageHeader.CreateHeader("headerName", "Namespace", "value"));
    mockContext.SetupGet(x => x.IncomingMessageHeaders).Returns(() => ヘッダー);
    (新しい MockedOperationContext(mockContext.Object)) を使用して
    {
      // サービスをテストする
    }
于 2014-01-14T10:06:49.270 に答える
0

私のソリューションには、既存の wcfclient を使用してその innerChannel を取得するという同様の問題がありました。

   OperationContext.Current = new OperationContext(new MyWcfClient().InnerChannel);
     OperationContext.Current.OutgoingMessageProperties["MyData"] = "somedata that i needed";

これが誰かに役立つことを願っています

于 2015-09-02T21:28:31.207 に答える