【问题标题】:C# Visual Studio Unit Test, Mocking up a client IP addressC# Visual Studio 单元测试,模拟客户端 IP 地址
【发布时间】:2010-04-20 21:32:41
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    看看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 :-)

    【讨论】:

    • 是的,我知道依赖注入,我只是想避免更改我现有的代码:(
    • 有Type mock - site.typemock.com - 不过没用过,一直有时间改代码! ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多