0

masterpage.asx.cs で Request.UrlReferrer.Host を使用するメソッドがあります。

protected string DoSomething()
{
  Request.UrlReferrer.Host is used
//Request is of httprequest usercontrol
}

このメソッドの単体テスト ケースを作成しようとしています。

そして呼び出し target.DoSomething() を持っていますが、リクエストにはnull値があります。DoSomething() メソッドが壊れないように値を指定するにはどうすればよいですか?

助けてください。

ありがとう。

4

1 に答える 1

0

これらの値は 内で設定できないため、別のアプローチをお勧めしますHttpRequest

HttpRequestを処理し、適切な出力を生成することだけを担当するクラスを作成します。次に、そのクラスからインターフェイスを抽出します。DoSomethingそのインターフェイスに依存します。テストのために、メソッドがそのロジックで使用するデータを提供できる「偽物」または代用実装を提供できます。

たとえば、次のようなインターフェイスがある場合があります

interface ICanHandleRequest { }

したがって、DoSomething メソッドが通常使用する実装を本番コードに含めることができます。

class RequestHandler : ICanHandleRequest { } 

ただし、テスト用に別の実装を作成して、DoSomething メソッドをテストできるようにします。

class TestHandler : ICanHandleRequest { }

必要に応じて、モッキング ライブラリ ( Rhino Mocksなど) を使用してそのような偽物を作成することもできます。アイデアは、 のDoSomething使い方を知る必要はなくHttpRequest、他の責任があるということです。単に出力が必要です。本番環境では、そのデータは実際のクラスから取得され、HttpRequest. テストの場合は、実装を、テストに適したデータを生成できるものに置き換えるだけです。わかる?

于 2012-04-07T03:01:44.620 に答える