2013-02-26 113 views
4

我想单元测试一些使用HttpListenerContext的代码。我找不到可以模拟的基类或接口。是否有像HttpListenerContext HttpRequestBase?嘲笑HttpListenerContext

回答

2

解决问题的方法是用虚拟方法创建一个抽象类。

public abstract class HttpListenerContextBase 
{ 
    public virtual HttpListenerRequestBase Request { get; private set; } 
    public virtual HttpListenerResponseBase Response { get; private set; } 
    public virtual IPrincipal User { get; private set; } 
} 

然后,您可以创建自己的包装类接受HTTPListnerContext在构造和HttpListenerContextBase继承了真正的一个。它只是从真实的上下文中返回方法。

在您的代码中,您将针对HttpListenerContextBase编写所有方法并注入一个模拟的方法。

这一点努力,但让你的东西测试。