Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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#,除非在试验方法中实例化,否则不使用垫片_C#_.net_Shim - Fatal编程技术网

奇怪的垫片行为C#,除非在试验方法中实例化,否则不使用垫片

奇怪的垫片行为C#,除非在试验方法中实例化,否则不使用垫片,c#,.net,shim,C#,.net,Shim,这应该是一个简单的(我是新的垫片…) 因此,如果没有垫片,该测试将失败,因为没有这样的url,它将无法解析。使用垫片,它工作正常。问题是,如果创建我想要测试的类并调用一个方法,该方法以同样的方式创建HttpWebRequest,那么shim魔术似乎不起作用,它确实尝试解析url。我以前用SmtpClient做过一个类似的测试,这是可行的,所以我真的不明白为什么我的方法创建这些对象的行为会有任何不同 在这方面有什么想法/经验吗 更新1 我的班级代码: public void METHODN

这应该是一个简单的(我是新的垫片…)

因此,如果没有垫片,该测试将失败,因为没有这样的url,它将无法解析。使用垫片,它工作正常。问题是,如果创建我想要测试的类并调用一个方法,该方法以同样的方式创建HttpWebRequest,那么shim魔术似乎不起作用,它确实尝试解析url。我以前用SmtpClient做过一个类似的测试,这是可行的,所以我真的不明白为什么我的方法创建这些对象的行为会有任何不同

在这方面有什么想法/经验吗

更新1

我的班级代码:

    public void METHODNAME()
    {
        try
        {
            // Request the login page
            Uri url = new Uri(BaseUrl + "logon.aspx");
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            request.AllowAutoRedirect = false;
            request.CookieContainer = Cookies;
            // Exception raised below
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    etc....
所以这是一个非常基本的方法

更新2

刚刚将此添加到我正在测试的类中:

    public void test()
    {

        var http = WebRequest.Create("http://moomoo.moomoo") as HttpWebRequest;
        var r = http.GetResponse() as HttpWebResponse;
    }

它很好用。。因此,另一种方法肯定有一些不同。。但我确实看不到任何明显的东西。当/如果我找到解决方案时将更新

您只为from Create方法的字符串变量制作了一个垫片。您正在调用Url变量:

当前:

ShimWebRequest.CreateString = (url) =>
        {
            return new ShimHttpWebRequest();
        };
对于创建的Url变量:

ShimWebRequest.CreateUrl = (url) =>
        {
            return new ShimHttpWebRequest();
        };

您只为from Create方法的字符串变量制作了一个垫片。您正在调用Url变量:

当前:

ShimWebRequest.CreateString = (url) =>
        {
            return new ShimHttpWebRequest();
        };
对于创建的Url变量:

ShimWebRequest.CreateUrl = (url) =>
        {
            return new ShimHttpWebRequest();
        };

您只为from Create方法的字符串变量制作了一个垫片。您正在调用Url变量:

当前:

ShimWebRequest.CreateString = (url) =>
        {
            return new ShimHttpWebRequest();
        };
对于创建的Url变量:

ShimWebRequest.CreateUrl = (url) =>
        {
            return new ShimHttpWebRequest();
        };

您只为from Create方法的字符串变量制作了一个垫片。您正在调用Url变量:

当前:

ShimWebRequest.CreateString = (url) =>
        {
            return new ShimHttpWebRequest();
        };
对于创建的Url变量:

ShimWebRequest.CreateUrl = (url) =>
        {
            return new ShimHttpWebRequest();
        };

你能展示你调用另一个类的代码吗,如果可能的话,还有那个类中的代码吗?谢谢Justin,我已经添加了代码到了它中断的地方,你可以看到它非常基本,我只是创建了这个类,调用than方法(都在上下文中),然后我得到了一个不同的结果,令人惊讶的是,你能展示你调用另一个类的代码吗?如果可能的话,还有该类中的代码吗?谢谢Justin,我已经添加了代码到了它中断的地方,正如你所看到的,这是非常基本的,我只是创建了类,调用而不是方法(都在上下文中),然后我得到了一个不同的结果,令人惊讶的是,你能展示你调用另一个类的代码吗?如果可能的话,还有该类中的代码吗?谢谢Justin,我已经添加了代码到了它中断的地方,正如你所看到的,这是非常基本的,我只是创建了类,调用而不是方法(都在上下文中),然后我得到了一个不同的结果,令人惊讶的是,你能展示你调用另一个类的代码吗?如果可能的话,还有该类中的代码吗?谢谢Justin,我已经添加了代码,直到它崩溃,正如你所看到的,这是非常基本的,我只是创建了类,调用而不是方法(都在上下文中),我得到了一个不同的结果,这是令人惊讶的Hanks!!我真的明白了!哇,我今天真傻。非常感谢您对一个白痴的快速回复:)谢谢!!我真的明白了!哇,我今天真傻。非常感谢您对一个白痴的快速回复:)谢谢!!我真的明白了!哇,我今天真傻。非常感谢您对一个白痴的快速回复:)谢谢!!我真的明白了!哇,我今天真傻。非常感谢您对一个白痴的快速回复:)