4

AreasでMVC2を使用しています。ルーティングをテストするために、MvcContribを使用しています。

これはテストコードです:

[Test]
public void Home()
{
    MvcApplication.RegisterRoutes(RouteTable.Routes);
    "~/".ShouldMapTo<HomeController>(x => x.Login("Nps"));
}

エリアに保存されているルーティング定義を呼び出す方法がわかりません。AreaRegistration.RegisterAllAreas()を呼び出すことは、例外を与えるため、オプションではありません。

ありがとうRevin

4

3 に答える 3

5

これは私が私のために働く方法です

[Test]
public void VerifyRouteMapFor_Test_Area_TestController()
{
    RouteTable.Routes.Clear();

    var testAreaRegistration = new testAreaRegistration();
    testAreaRegistration.RegisterArea(new AreaRegistrationContext(testAreaRegistration.AreaName, RouteTable.Routes));

    "~/test/index".ShouldMapTo<testController>(x => x.Index());
}
于 2010-06-03T21:21:58.603 に答える
1

RegisterAllAreasを呼び出すのではなく、テストしているその領域のAreaRegistrationを呼び出す必要があります。RegisterAllAreasは、ロードされたすべてのアセンブリをスキャンするため、テストには多すぎます。手動でテストを設定します。それでも問題が解決しない場合は、ここまたはmvccontribメーリングリストに投稿してください。領域をより適切にサポートするために、TestHelperを更新する必要がある場合があると確信しています。テストヘルパーには、まだ特定の領域のサポートを追加していません。

于 2010-04-30T02:46:31.130 に答える
0

単体テストの場合、おそらく1つの領域だけを実行するのが最善です。ただし、統合テストの場合は、コンテキストimoのすべてのルートをテストする必要があります。

于 2010-10-19T15:03:07.723 に答える