在单元测试项目中使用mock时,源不起作用

时间:2012-09-25 08:53:13

标签: asp.net-mvc unit-testing

当我使用模拟概念初始化单元测试项目中的httpcontext.Request.Url时,源项目未初始化。所以它抛出null引用异常。你能告诉我如何解决这个问题吗?

例如:

实际代码

class sample

{
    public void sample_method()
    {
        string url=Request.Url.ToString();
    }
}

更新了单元测试代码

​

class sample: IRequestAttr
{
    private readonly IRequestAttr _attr;

    public sample(IRequestAttr attr)
    {
        _attr=attr;
    }

    public string URL
    {
        return HttpContext.Request.Url.ToString();
    }

    public void sample_method()
    {
        string url=_attr.URL();
    }
}

public interface IRequestAttr
{
    string URL();
}

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用

HttpContextBase

创建一个工厂来获取您的上下文,您可以使用您想要的任何模拟替换实际请求。可根据要求提供更多代码

在我自己的测试中查看笔记,我已经为一个能够很好地解释事情的博客添加了书签 http://www.codethinked.com/Using-SystemWebAbstractions-in-Your-WebForms-Apps