【发布时间】:2010-04-20 21:32:41
【问题描述】:
我正在编写一些单元测试,但在尝试执行以下操作时,我的真实代码抛出了异常:
string IPaddress = HttpContext.Current.Request.UserHostName.ToString();
有没有办法在不重写我的代码以接受 IP 地址作为参数的情况下模拟 IP 地址?
谢谢!
【问题讨论】:
标签: c# visual-studio unit-testing tdd mocking
我正在编写一些单元测试,但在尝试执行以下操作时,我的真实代码抛出了异常:
string IPaddress = HttpContext.Current.Request.UserHostName.ToString();
有没有办法在不重写我的代码以接受 IP 地址作为参数的情况下模拟 IP 地址?
谢谢!
【问题讨论】:
标签: c# visual-studio unit-testing tdd mocking
基本上,您可以通过将数据推送到具有“上下文”或“设置”类(例如在本例中)的类中来解决此类问题。
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 :-)
【讨论】: