使用HttpContext的单元测试方法
本文关键字:测试方法 单元 HttpContext 使用 | 更新日期: 2023-09-27 18:02:05
public SupportedBrowser GetBrowser()
{
string agent = HttpContext.Current.Request.Headers["User-Agent"];
if (agent.Contains("iPad"))
{
return new iPad();
}
else
return new InternetExplorer7();
}
我使用微软的单元测试工具(MS-Test?)为上述方法设置了一个单元测试。因为单元测试不是一个网站,所以没有HttpContext。我能想到两个解决办法:
。添加可选参数:GetBrowser(bool debug = false)
。这允许执行当前代码而无需重构。然后修改该方法,以便在debug为true时创建模拟上下文或硬编码的用户代理。
B。添加依赖注入。从其他地方获取上下文。尽管如此,我认为我需要通过ninject将IoC降为自动操作。那可真麻烦。
你能想到更好的东西或改进这些想法吗?
注意,这个方法被封装在一个类库中。我想保持这种状态
您的代理字符串是嘲弄的自然场所。不是从该方法中的请求上下文获取代理字符串,而是将其传递或注入到方法/类中。这样,您就可以在测试和运行时对它进行控制。