【问题标题】:Mocking HttpWebResponse with Rhino Mock用 Rhino Mock 模拟 HttpWebResponse
【发布时间】:2015-07-01 13:54:46
【问题描述】:

我刚开始模拟并选择了 Rhino Mock。我有一个方法,其中包含两个我想模拟的方法。

它们基本上是对返回 HttpWebResponse 的方法的调用。因为我热衷于进行单元测试,所以我想将我的依赖关系放到这些方法通常与之通信的外部站点。相反,我想根据自己的条件创建一个虚假的响应,例如状态码 200、404、500 等。

我尝试过环顾四周,但我只看到了旧示例或模拟 HttpWebResponse 的看起来非常复杂的变通方法。正是出于这个原因,我想发布这个问题,希望在最新的 Rhino Mock 版本下有一个更流畅、更短、更简单的解决方案。

我看过的一篇文章的例子:http://javahow.net/questions/9823039/is-it-possible-to-mock-out-a-net-httpwebresponse

我没有有价值的代码来证明这与这里相关。我只是在寻找简洁的示例,其中使用 AAA 方法模拟了 HttpWebResponse 作为单元测试的一部分。

提前致谢!

【问题讨论】:

  • 也许您应该发布一个您发现的示例,以便人们可以评估他们的方式是否更短、更流畅或更容易......您尝试测试调用的方法示例将也有助于设置一些上下文。
  • 我的answer 是您要找的吗?
  • 您好,我看过您的示例,但注意到它使用 WebRequest / WebResponse 而不是 HttpWebRequest 和 HttpWebResponse。
  • 嗨,老狐狸,我一直在研究您的解决方案,并想试一试。我似乎看不到任何可以设置 Http StatusCode 的明显方式。这在您的实施中是否可行?

标签: c# asp.net unit-testing rhino-mocks


【解决方案1】:

我在这里找到了一个似乎可以完成这项工作的代码段。我仍然要完成它的步伐,但代码行更少等。我现在正在我的方法上使用 WebRequest,我正在寻找测试:

https://github.com/ayende/rhino-mocks/blob/master/Rhino.Mocks.Tests/FieldsProblem/FieldProblem_SpookyET.cs

 public void MockHttpRequesteRsponse() 
     { 
         byte[] responseData = Encoding.UTF8.GetBytes("200 OK"); 
         Stream stream = new MemoryStream(responseData); 
         WebRequest request = (WebRequest)mocks.StrictMock(typeof(WebRequest)); 
         WebResponse response = (WebResponse)mocks.StrictMock(typeof(WebResponse)); 
         Expect.On(request).Call(request.GetResponse()).Return(response); 
         Expect.On(response).Call(response.GetResponseStream()).Return(stream); 


         mocks.ReplayAll(); 


         Stream returnedStream = GetResponseStream(request); 


         Assert.Same(stream, returnedStream); 
         string returnedString = new StreamReader(returnedStream).ReadToEnd(); 
         Assert.Equal("200 OK", returnedString); 
     } 

//

private Stream GetResponseStream(WebRequest request) 
     { 
         return request.GetResponse().GetResponseStream(); 
    } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2010-12-25
    相关资源
    最近更新 更多