1

log4net のラッパー ライブラリを作成しています。このライブラリは、クエリ文字列、Cookie、フォーム フィールドなどのコンテキスト情報を取得できる必要があります。

TDD クラスではなく、コンソール アプリケーションからこのラッパー クラスを呼び出しています。

次のように、コンソール アプリケーション内に HttpContext オブジェクトを設定する方法はありますか?

HttpContext c = new HttpContext(null);
c.Request.QueryString.Keys[1] = "city";
c.Request.QueryString[1] = "Los Angeles";
c.Request.QueryString.Keys[2] = "state";
c.Request.QueryString[2] = "CA";

そして、次のように取得しますか?

Console.WriteLine(context.Request.QueryString.Keys[1]);

上記のコードを実行しようとすると、次の例外が発生します。

Property or indexer 'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection.this[int]' cannot be assigned to -- it is read only 
4

2 に答える 2

1

Moq を使用してそれを偽造する方法については、こちらを参照してください

于 2012-04-05T22:13:18.573 に答える
1

HttpContext をモックするのは簡単ではありません。Typemock Isolatorを使用してコンテキストをセットアップできますが、無料ではありません。別の (より良い) アプローチは、HttpContext を抽象化し、抽象化のモック実装に対してコンソール (テスト?) クライアントを実装することです。

于 2012-04-05T22:16:41.403 に答える