Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用moq为单元测试设置服务器变量_C#_Asp.net_Unit Testing_Moq - Fatal编程技术网

C# 如何使用moq为单元测试设置服务器变量

C# 如何使用moq为单元测试设置服务器变量,c#,asp.net,unit-testing,moq,C#,Asp.net,Unit Testing,Moq,我使用Moq为我的asp.net页面创建单元测试 我编写了以下代码来测试contextbase请求类中的ServerVariables HttpContextBase contextbase = MoqHelper.FakeHttpContext(); contextbase.Request.ServerVariables.Add("AUTH_TYPE","Forms"); <-- error here contextbase.Request.ServerVariables.Add("LO

我使用Moq为我的asp.net页面创建单元测试

我编写了以下代码来测试contextbase请求类中的ServerVariables

HttpContextBase contextbase = MoqHelper.FakeHttpContext();
contextbase.Request.ServerVariables.Add("AUTH_TYPE","Forms"); <-- error here
contextbase.Request.ServerVariables.Add("LOGON_USER", "Tom");
contextbase.Request.ServerVariables.Add("REQUEST_METHOD", "GET");
HttpContextBase contextbase=MoqHelper.FakeHttpContext();

contextbase.Request.ServerVariables.Add(“AUTH_TYPE”、“Forms”) Scott Hanselman的页面上有一些印刷错误(小写类名)。下面是代码的外观(我还将旧的
Expect
语法更改为新的
Setup
语法):

这里的主要思想-您不能直接使用
contextBase.Request.QueryString
您应该在以下操作之前设置Request mock:

 mock.Setup(req => req.QueryString)
            .Returns(GetQueryStringParameters(url));

你模拟了contextbase.Request吗?我怎么做?我一直在关注汉斯曼教程中的每一件事……啊,好的。我对MOQ不太在行,但您应该创建一个新的
NameValueCollection
。然后可能
contextbase.Request.Expect(r=>r.ServerVariables).Returns(collectionimade)乔,这很有帮助。我可以用谷歌搜索你的评论并找到一些代码示例。thanksbtw如果您只需要运行代码,可以添加
request.Setup(r=>r.ServerVariables).Returns(new NameValueCollection())创建请求模拟时。
public static void SetupRequestUrl(this HttpRequestBase request, string url)
{
    if (url == null)
        throw new ArgumentNullException("url");

    var mock = Mock.Get(request);

    mock.Setup(req => req.QueryString)
        .Returns(GetQueryStringParameters(url));
    mock.Setup(req => req.AppRelativeCurrentExecutionFilePath)
        .Returns(GetUrlFileName(url));
    mock.Setup(req => req.PathInfo)
        .Returns(string.Empty);
}
 mock.Setup(req => req.QueryString)
            .Returns(GetQueryStringParameters(url));