繁体   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