簡體   English   中英

使用 HttpContext 的單元測試方法

[英]Unit test method with HttpContext

    public SupportedBrowser GetBrowser()
    {
        string agent = HttpContext.Current.Request.Headers["User-Agent"];

        if (agent.Contains("iPad"))
        {
            return new iPad();
        }
        else
            return new InternetExplorer7();
    }

我使用 Microsoft 的單元測試工具(MS-Test?)為上述方法設置了單元測試。 因為單元測試不是web站點,所以沒有HttpContext。 我可以想到兩個解決方案:

A. 添加一個可選參數: GetBrowser(bool debug = false) 這允許當前代碼在不重構的情況下執行。 然后在調試為真時修改該方法以創建模擬上下文或硬編碼用戶代理。

B. 添加依賴注入。 從其他地方獲取上下文。 不過,我認為我需要通過 ninject 加入 IoC 以使其自動化。 那是很多工作。

你能想出更好的東西或改進這些想法嗎?

請注意,此方法位於 class 庫中。 我想保持這種狀態。

您的代理字符串是 mocking 的自然位置。 與其從該方法內的請求上下文中獲取代理字符串,不如將其傳遞或注入到方法/類中。 這樣您就可以在測試和運行時控制它。

暫無
暫無

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

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