【发布时间】:2011-05-04 01:42:57
【问题描述】:
首先,让我说我已经搜索过这个主题并在这里找到了一个解决方案:
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);
}
因此,他们正在构建一条消息和一张图片,以在 Index 操作中显示给用户。 Url.Content 妨碍了对此进行单元测试,因此我正在寻找解决/解决此问题的建议。
我确实有一个替代解决方案,它需要更多的努力和重构,但我认为这是一个很好的解决方案 讨论点无论哪种方式,因为我之前已经运行过几次并且总是不得不做一些事情 普通。
除了上述解决方案之外,还有哪些其他选择可以推动?感谢您的意见。
谢谢
【问题讨论】:
-
为什么你没有权限改进你的公司代码库?
-
Slandau,如果涉及到这个问题,我会提出这个问题,但从业务角度来看,这是一个完成的解决方案。因此,对于不被视为增值的东西,此时实施更改将更具挑战性。这是我目前正在尝试改变的一种文化,所以如果我可以避免对解决方案本身进行更改,同时仍然能够实施单元测试,那将是一个胜利。
-
我发现测试 url.content 的概念是一种无用的练习。为此添加单元测试并不能帮助您的组织相信可测试性不仅仅是一个时间槽。
标签: c# asp.net-mvc unit-testing asp.net-mvc-3 moq