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

3

我正在编写一些单元测试,但是当我尝试执行以下操作时,我的真实代码抛出了一个异常:

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

有没有一种方法可以模拟IP地址,而无需重写我的代码以接受IP地址作为参数?

谢谢!

1个回答

5
请看依赖注入
基本上,您可以通过将数据推送到一个类中(例如在这种情况下是“上下文”或“设置”类)来解决此类问题。
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 :-)

是的,我知道依赖注入,只是我想避免改变我的现有代码 :( - Jimmy
有一个叫做TypeMock的工具 - http://site.typemock.com/ - 但我从未使用过它,因为我总是有时间修改代码!;-) - Paul Kohler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接