簡體   English   中英

起訂量和 Url.Content

[英]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}' />&nbsp;&nbsp;{1}", imageUrl, message);
    }

因此,他們正在構建一條消息和一張圖片,以在 Index 操作中顯示給用戶。 Url.Content 妨礙了對此進行單元測試,因此我正在尋找解決/解決此問題的建議。

我確實有一個替代解決方案,它涉及更多的工作和重構,但我認為這是一個很好的討論點,因為我之前已經運行了幾次並且總是不得不做一些與眾不同的事情。

除了上述解決方案之外,還有哪些其他選擇可以推動? 感謝您的意見。

謝謝你

controller 的設計不正確,再多的單元測試也無法解決這個問題。 讓它們允許您更正代碼並簡單地返回 null 結果的適當視圖,如果需要,可能在 ViewBag 中設置一條消息。 然后,您將在視圖內顯示適當的圖像和消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM