我正在编写一些单元测试,并且在尝试执行以下操作时,我从实际代码中抛出异常:
string IPaddress = HttpContext.Current.Request.UserHostName.ToString();
有没有办法模拟IP地址而不重写我的代码以接受IP地址作为参数?
谢谢!
答案 0 :(得分:5)
基本上,您可以通过将数据推送到具有(例如在本例中)“上下文”或“设置”类的类来解决此类问题。
public interface IAppContext
{
string GetIP();
}
然后你有一个prod实现,它可以完成真实的事情以及你测试中的模拟或伪造。
public class AppContext : IAppConext
{
public string GetIP()
{
return HttpContext.Current.Request.UserHostName.ToString();
}
}
使用ip地址将应用程序上下文推入类中
哦 - 据我所知,对于任何VS版本都没有内置的嘲讽,你需要查看其中一个 - Rhino mocks,Moq ......有很多!另请参阅typemock,但这需要采用不同的方法。
PK: - )