2

asp.netコントローラーを単体テストするとき、何らかの方法でhttpcontextbaseをモックする必要はありませんか?

すべてのコントローラーは、私が作成したカスタム コントローラー クラスを継承します (元のコントローラー クラスにいくつかの共通プロパティを追加するだけです)。だからそのような:

public class MyController : Controller
{
    protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext context)
    {
         // look for a specific cookie
    }

}

コントローラーの単体テストを本当に開始したいのですが、コントローラークラスとそれに付随するhttpcontextをどのようにモックするのかわかりません。

4

1 に答える 1

2

Moqを使用してモックHttpContextBaseを設定する方法の例を次に示します。

var httpCtxStub = new Mock<HttpContextBase>();

var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtxStub.Object;

sut.ControllerContext = controllerCtx;

// Exercise and verify the sut

ここでsut、はテスト対象システム(SUT)、つまりテストするコントローラーを表します。

于 2009-12-21T19:12:47.260 に答える