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

Jim*_*mmy 2 c# tdd unit-testing mocking visual-studio

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

string IPaddress = HttpContext.Current.Request.UserHostName.ToString();
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Pau*_*ler 5

看看依赖注入.

基本上,通过将数据推送到具有(例如在这种情况下)"上下文"或"设置"类的类中来解决这些问题.

public interface IAppContext
{
  string GetIP();
}
Run Code Online (Sandbox Code Playgroud)

然后你有一个prod实现,它可以完成真实的事情,并在你的测试中使用模拟或伪造.

public class AppContext : IAppConext
{
  public string GetIP()
  {
    return HttpContext.Current.Request.UserHostName.ToString();
  }
}
Run Code Online (Sandbox Code Playgroud)

使用ip地址将应用程序上下文推送到类中...

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

PK :-)