C#Visual Studio单元测试,模拟客户端IP地址

时间:2010-04-20 21:32:41

标签: c# visual-studio unit-testing tdd mocking

我正在编写一些单元测试,并且在尝试执行以下操作时,我从实际代码中抛出异常:

string IPaddress = HttpContext.Current.Request.UserHostName.ToString();

有没有办法模拟IP地址而不重写我的代码以接受IP地址作为参数?

谢谢!

1 个答案:

答案 0 :(得分:5)

看看Dependency Injection

基本上,您可以通过将数据推送到具有(例如在本例中)“上下文”或“设置”类的类来解决此类问题。

public interface IAppContext
{
  string GetIP();
}

然后你有一个prod实现,它可以完成真实的事情以及你测试中的模拟或伪造。

public class AppContext : IAppConext
{
  public string GetIP()
  {
    return HttpContext.Current.Request.UserHostName.ToString();
  }
}

使用ip地址将应用程序上下文推入类中

哦 - 据我所知,对于任何VS版本都没有内置的嘲讽,你需要查看其中一个 - Rhino mocksMoq ......有很多!另请参阅typemock,但这需要采用不同的方法。

PK: - )