单元测试(C#版)(4)

发表于:2016-05-23来源:推酷作者:丑小丫大笨蛋点击数: 标签:单元测试
比如说,我们在某个函数中需要利用HttpClient通过SendAsync方法从某个EndPoint获取数据进行处理。但是在local测试的时候不一定能够连上那个EndPoint,或者不能

  比如说,我们在某个函数中需要利用HttpClient通过SendAsync方法从某个EndPoint获取数据进行处理。但是在local测试的时候不一定能够连上那个EndPoint,或者不能保证那个EndPoint会返回什么东西。所以我们可以写mock一个ResponseHandler,这样我们就可以把mock的返回结果放进httpClient中传给需要测试的模块,这样就可以测试该模块内后续部分的处理了。

  internal class MockResponseHandler : DelegatingHandler

  {

  public HttpStatusCode StatusCode { get; set; }

  public HttpContent Content { get; set; }

  protected override async Task SendAsync(HttpRequestMessage request,

  System.Threading.CancellationToken cancellationToken)

  {

  return await ReturnRespsonse();

  }

  private Task ReturnRespsonse()

  {

  var response = new HttpResponseMessage()

  {

  StatusCode = this.StatusCode,

  Content = this.Content

  };

  return Task.Run(() => response);

  }

  }

  var successHttpClient = new HttpClient(

  new MockResponseHandler

  {

  StatusCode = HttpStatusCode.OK

  });

  var forbidHttpClient = new HttpClient(

  new MockResponseHandler

  {

  StatusCode = HttpStatusCode.Forbidden,

  Content = new StringContent(testError)

  });

  实际上,.NET中现在很多mock对象的框架供选择(参见http://www.mockobjects.org ),很多常用的mock都可以直接使用框架,而不需要自己去写。

  4. 帮助你更好地进行单元测试的工具

  NUnit

  ReShaper

  奈何家里的笔记本下载它们一直失败,所以这里先给个链接,以后有机会再介绍一下它们吧(⊙﹏⊙)b

  参考文献:

  《单元测试之道C#版》

  单元测试之道C#版 第一章

  单元测试 百度百科

  谈谈单元测试之(一):为什么要进行烦人的单元测试?

  C#中的单元测试

  A Unit Testing Walkthrough with Visual Studio Team Test

  文/丑小丫大笨蛋(简书作者)

  原文链接:http://www.jianshu.com/p/7984955720e2

  著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

原文转自:http://www.jianshu.com/p/7984955720e2