我很难弄清楚我需要在测试中模拟什么,以显示UrlHelper.RouteUrl()返回了正确的URL。它可以工作,但我希望有正确的测试覆盖率。控制器方法的核心如下所示:
var urlHelper = new UrlHelper(ControllerContext.RequestContext);
return Json(new BasicJsonMessage { Result = true,
Redirect = urlHelper.RouteUrl(new { controller = "TheController",
action = "TheAction",
id = somerecordnumber }) });测试结果对象非常简单,如下所示:
var controller = new MyController();
var result = controller.DoTheNewHotness());
Assert.IsInstanceOf<JsonResult>(result);
var data = (BasicJsonMessage)result.Data;
Assert.IsTrue(data.Result);result.Redirect总是空的,因为控制器显然对路由一无所知。我必须对控制器做什么才能让它知道?正如我所说的,我知道当我练习生产代码时,它可以工作,但我想要一些测试保证。谢谢你的帮忙!
发布于 2011-11-01 03:49:07
在我看来,您是在尝试测试调用UrlHelper的一些自己的代码,而不是测试框架的UrlHelper本身的功能。如果是这样的话,这个答案ASP.NET MVC: Unit testing controllers that use UrlHelper对我来说很有效。
发布于 2010-05-24 14:11:57
UrlHelper.RouteUrl()不是一个框架方法吗?测试是.NET团队的责任,不是你的!
您可能想要对您的路由配置进行单元测试。This question确实很旧(MVC Beta1),但答案可能仍然有效。Phil Haack的Routing Debugger总是在那里等着你,如果这还不够,在谷歌上还有很多其他的选择。
https://stackoverflow.com/questions/2895049
复制相似问题