4

私はこのコントローラーメソッドを持っています:

[GET("/whatever/list")]
public ActionResult Index(string sortby, string order)

MvcContribルートテストでテストしようとしています。

"~/whatever/list".ShouldMapTo<MyController>(c => c.Index(string.Empty, string.Empty));
"~/whatever/list?sortby=type&order=desc".ShouldMapTo<MyController>(c => c.Index("type", "desc"));

ただし、このエラーが返されます。

失敗:MvcContrib.TestHelper.AssertionException:パラメーター'sortby'の値が一致しませんでした:期待される''が''でした; 'sortby'という名前のルートコンテキストアクションパラメータに値が見つかりません-一致するルートに'sortby'というトークンが含まれていますか?

私は何が欠けていますか?

4

2 に答える 2

2

アサーションメッセージに基づいて(つまりexpected '' but was '';、値の1つがアサーション内にある)、最初のテストは失敗します。これは、使用したが、文字列のデフォルト値がnullstring.Emptystring.Emptynull

使用するようにアサートを変更すると、次のようnullになります。

"~/whatever/list".ShouldMapTo<MyController>(c => c.Index(null, null));
于 2012-05-25T18:27:09.437 に答える
2

私は好きだった

var route = "~/whatever/list".WithMethod(HttpVerbs.Get);
route.Values.Add("sortby", "type");
route.Values.Add("order", "desc");
route.ShouldMapTo<MyController>(c => c.Index("type", "desc"));
于 2013-07-08T13:39:59.170 に答える