我有这种控制器方法:
[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'的标记?
我错过了什么?
答案 0 :(得分:3)
基于断言消息(expected '' but was '';
,因此断言中的一个值为null
或string.Empty
),您的第一个测试失败了,因为您使用了string.Empty
但是字符串的默认值为null
将您的断言更改为使用null
,它应该是wotk:
"~/whatever/list".ShouldMapTo<MyController>(c => c.Index(null, null));
答案 1 :(得分: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"));