如何对委托处理程序进行单元测试

罗希特:

我有一个具有超时,重试,授权委托处理程序的httpClient。

        var authorizationHandler = new AuthorizationDelegatingHandler();
        var retryHandler = new RetryPolicyDelegatingHandler(3);
        var timeoutHandler = new TimeOutDelegatingHandler(TimeSpan.FromSeconds(5));
        

        authorizationHandler.InnerHandler = retryHandler;
        retryHandler.InnerHandler = timeoutHandler;

        _myHttpClient = new HttpClient(authorizationHandler);

我正在按照教程进行操作,并且尝试对超时处理程序进行单元测试

    [TestMethod]
    [ExpectedException(typeof(TimeoutException))]
    public async Task GetDocuments_Timeout_MustThrowTimeoutException()
    {

        var unauthorizedResponseHttpMessageHandlerMock = new Mock<HttpMessageHandler>();
        unauthorizedResponseHttpMessageHandlerMock.Protected().Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(new HttpResponseMessage()
        {
            StatusCode = System.Net.HttpStatusCode.Unauthorized
        });


        

        var httpClient = new HttpClient(unauthorizedResponseHttpMessageHandlerMock.Object);
        httpClient.BaseAddress = new Uri("http://localhost");
        var timeoutHandler = new TimeOutDelegatingHandler(TimeSpan.FromSeconds(3));
        var testableClass = new MyCustomclass(httpClient);
        var cancellationSource = new CancellationTokenSource();

        await testableClass.Foo();
    }

我被困在这一点上。如何在单元测试项目中链接这些处理程序?

Athanasios Kataras:

答案很简单,您不应该这样做。您应该做的是:

  1. 单元测试单元。那是一段简单的代码,设计要做一件事或几件事。
  2. 分别为每个处理程序创建测试。
  3. 为配置期间发生的处理程序构造创建测试。

您不应测试链作为单元测试的工作方式,因为这会极大地扩大范围,并使单元测试无法维护。

这就是集成测试的目的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对Eclipse命令处理程序进行单元测试?

如何对iOS应用程序委托方法的调用进行单元测试?

重置golang中的http处理程序以进行单元测试

如何对Google App Engine Go HTTP处理程序进行单元测试?

如何使用Power Mock对Spring Boot Rest Controller和异常处理程序进行单元测试

如何在vert.x Java中对处理程序进行单元测试?

Python:如何对自定义HTTP请求处理程序进行单元测试?

如何在C#中以CQRS模式对命令处理程序进行单元测试

PHPUnit Laravel:如何对自定义异常处理程序进行单元测试?

我如何对这个处理 observables 的函数进行单元测试

如何对 Go Gin 处理函数进行单元测试?

如何模拟配置阶段提供程序进行单元测试?

如何对与块设备交互的程序进行单元测试

AngularJS:如何对提供程序进行单元测试

Golang单元测试HTTP处理程序

单元测试golang处理程序

单元测试通用处理程序

单元测试事件处理程序的代码

如何使用Jest和Enzyme对包含history.push的react事件处理程序进行单元测试?

角度单元测试:如何对.map()进行单元测试?

单元测试委托方法

我如何断言在单元测试中调用了委托

Netty-使用IdleStateHandler对处理程序的空闲状态进行单元测试

JavaScript事件处理程序是否应该进行单元测试

如何对BSD插槽进行单元测试

如何对PHP特性进行单元测试

如何对异常进行单元测试?

如何对Reduxsauce进行单元测试?

如何对JSON解析进行单元测试