首先,请允许我说,我搜索了这个话题并没有碰到这里的解决方案:起订量和Url.Content
asp.net mvc: how to mock Url.Content("~")?
然而,该解决方案包括创建一个新的基地控制器,在我目前的情况,不是我有权做的事情。所以,这个问题...
我正在为MVC3应用程序编写一些单元测试(这是我目前雇主写的第一个单元测试,所以我真的想把单元测试的好处带回家[虽然是相对较新的 单元测试自己]),我已经遇到了障碍与Url.Content
该应用程序有一个动作如下:
[HttpGet]
public ActionResult SearchResults()
{
...
...
...
if(results == null)
{
DisplayMessageInView("...Some display message...");
return RedirectToAction("Index");
}
其中DisplayMessageInView被定义为
private void DisplayMessageInView(string message)
{
string imageUrl = Url.Content("~/Content/Images/109_AllAnnotations_Info_48x48_72.png");
TempData["AlertMessage"] = string.Format("<img alt='info' src='{0}' /> {1}", imageUrl, message);
}
因此,他们正在建立一条消息和一张图片,以便在索引操作中向用户显示。 Url.Content获取单元测试的方式,所以我正在寻找建议来解决/解决此问题。
我确实有一个替代解决方案需要更多的努力和重构,但是我认为这是一个很好的 讨论要点,因为我之前运行过几次,总是需要做点什么的普通的 。
上面的解决方案不足,还有什么其他选择可以超越这一点?您的意见是赞赏。
谢谢
为什么你没有权限改善你的公司代码基础? – slandau 2011-05-03 17:33:22
Slandau,如果说到这一点,我会按这个问题,但这是一个解决方案,从业务角度来看*做*。因此,在这一点上实施变革对于那些不被视为增值的东西来说更具挑战性。这是我现在想要改变的一种文化,所以如果我能够避免对解决方案本身的改变,同时仍然能够实现单元测试,那将是一场胜利。 – Khepri 2011-05-03 17:45:53
我发现测试url.content的概念是无用的练习。为此添加单元测试并不能帮助您的组织说服可测试性不仅仅是时间问题。 – 2011-05-03 19:11:14