[英]Moq and Url.Content
首先,讓我說我已經搜索過這個主題並且確實在這里遇到了一個解決方案:
asp.net mvc:如何模擬 Url.Content("~")?
但是,此解決方案涉及創建一個新的基礎 controller,在我目前的情況下,這不是我有權做的事情。 那么,問題...
我目前正在為一個 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 妨礙了對此進行單元測試,因此我正在尋找解決/解決此問題的建議。
我確實有一個替代解決方案,它涉及更多的工作和重構,但我認為這是一個很好的討論點,因為我之前已經運行了幾次並且總是不得不做一些與眾不同的事情。
除了上述解決方案之外,還有哪些其他選擇可以推動? 感謝您的意見。
謝謝你
controller 的設計不正確,再多的單元測試也無法解決這個問題。 讓它們允許您更正代碼並簡單地返回 null 結果的適當視圖,如果需要,可能在 ViewBag 中設置一條消息。 然后,您將在視圖內顯示適當的圖像和消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.