gpt4 book ai didi

c# - 单元测试 DelegatingHandler

转载 作者:可可西里 更新时间:2023-11-01 08:23:51 24 4
gpt4 key购买 nike

如何对自定义 DelegatingHandler 进行单元测试?我有以下内容,但它提示未设置 innerHandler。

var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://foo.com");
var handler = new FooHandler()
{
InnerHandler = new FooHandler()
};

var invoker = new HttpMessageInvoker(handler);
var result = await invoker.SendAsync(httpRequestMessage, new CancellationToken());

Assert.That(result.Headers.GetValues("some-header").First(), Is.Not.Empty, "");

最佳答案

您可以使用虚拟/假处理程序 (TestHandler) 将您正在测试的 DelegatingHandler (FooHandler) 的 InnerHandler 属性设置为显示在 that linked post在您的评论中。

public class TestHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK));
}
}

// in your test class method
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://example.com/");
var handler = new FooHandler()
{
InnerHandler = new TestHandler() // <-- change to use this

};

var invoker = new HttpMessageInvoker(handler);
var result = await invoker.SendAsync(httpRequestMessage, new CancellationToken());

Assert.That(result.Headers.GetValues("some-header").First(), Is.Not.Empty, "");

与那篇文章不同,这应该是运行测试所需的最低设置。

关于c# - 单元测试 DelegatingHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31650718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com