3

呼び出すメソッドを持つページングコントローラーがあります

RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, valueDictionary)

Rhino モックを使用してこのメ​​ソッドをテストしようとしていますが、GetVirtualPath をモックして null 以外のルートを返す方法がわかりません。RequestContext をモックしていますが、どのメソッド/プロパティをスタブ化する必要があるかわかりません。

mockRequestContext を適切にスタブ化することにより、GetVirtualPath は null 以外のパスを返す必要があります。

アドバイスをいただければ幸いです。

4

2 に答える 2

1

あなたの質問を理解できるかどうかわかりませんが、次のようになります。

IRouteTable routeTableMock = RhinoMocks.CreateMock<IRouteTable>();

// assuming that IRouteTable.Routes is of type IRoutes.
IRoutes routes = RhinoMocks.CreateMock<IRoutes>();

// return the routes with the mock
routeTableMock.Stub(x => x.Routes).Return(routes);

// setup the mock for GetVirtualPath
routes.Stub(
  x => x.GetVirtualPath(
    Arg<RequestContext>.Is.Anything, 
    Arg<IDictionary>.Is.Anything)
  .Return(/* whatever */);

これが探しているものでない場合は、クラスとテストしたいものについて詳しく説明する必要があります。

于 2009-04-27T09:57:21.117 に答える
1

完全な仮想パスが必要ではなく、それが生成する URL だけが必要な場合は、代わりに次を使用できます。

new UrlHelper(ControllerContext.RequestContext).RouteUrl(routeValueDictionary)

...そしてControllerContextをモックアウトします:

var mockHttpContext = new Mock<HttpContextBase>();

var controllerContext
    = new ControllerContext(
        mockHttpContext.Object,
        new RouteData(), 
        new Mock<ControllerBase>().Object);

var myController = new MyController { ControllerContext = controllerContext };

私はこの正確な問題を抱えていましたが、これで解決したようです。

于 2010-01-08T00:49:46.103 に答える