0

ルートエントリのテストメソッドを作成しようとしていますが、ルート設定にさまざまなアクションのエントリがたくさんありました。私は MvcContrib.TestHelperテストに使用しています。私はMVCとTDDを初めて使用します。この問題の解決にご協力ください。私のテストケースは失敗しています。合格させるにはどうすればよいですか。

ルートエントリー

 routes.MapRoute(
            name: "X1Details",
            url: "X1/{X1ID}",
            defaults: new { controller = "X1", action = "Index", X1ID = "X1ID" }
            );

X1Controller

   public ActionResult Index(int? instanceID = 0,  string  InfoMsg ="")
   {
   }

試験方法

[Test Method]
     public void Should_Route_X1Index()
            {

                "~/X1/"
                    .ShouldMapTo<X1Controller>(action => action.Index(null, ""));

            }

エラー

テストメソッドXXX.Tests.MVCContibRouteMapTest.Should_Route_X1IndexOfが例外をスローしました:MvcContrib.TestHelper.AssertionException:パラメーター'InfoMsg'の値が一致しませんでした:期待される''が''でした; 'InfoMsg'という名前のルートコンテキストアクションパラメータに値が見つかりません-一致するルートに'InfoMsg'というトークンが含まれていますか?

前もって感謝します。

4

2 に答える 2

1

私はこのアプローチが機能することを発見しました。これにより、コントローラーを同じままにすることができます。

[Test Method]
public void Should_Route_X1Index()
{
     var routeData = "~/X1/".Route();
     routeData.Values["InfoMsg "] = "";
     routeData.Values["instanceID"] = "0";
     routeData.ShouldMapTo<X1Controller>(action => action.Index(0, ""));
}
于 2012-09-24T16:39:50.990 に答える
0

デフォルト値は、MVCContribヘルパーではうまく機能しません。次のようにコントローラーのアクションを変更できます。

public ActionResult Index(int? instanceID, string InfoMsg)
{
    ...
}

その後:

"~/X1".ShouldMapTo<X1Controller>(action => action.Index(null, null));
于 2012-09-24T16:08:18.580 に答える