gpt4 book ai didi

c# - 我如何测试我的代码在我的 c# .net 核心项目中一次打开的请求连接不超过 50 个?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:03 24 4
gpt4 key购买 nike

我正在进行数据挖掘,理论上我的代码应该处理 50 个请求的批处理,并行运行特定的批处理,但要阻塞以等待批处理完成。

我需要确保它确实按预期运行并且不会打开超过 50 个传出连接 - 但我不知道如何访问该信息,并持续监控它以供我编写自动化测试。

我什至不确定我是否正在为我的测试中的任何批处理创建传出请求,因为我正在像这样模拟我的 http 客户端:

protected HttpClient httpClient;
protected Mock<HttpMessageHandlerFake> fakeHttpMessageHandler = new Mock<HttpMessageHandlerFake> { CallBase = true };
httpClient = new HttpClient(fakeHttpMessageHandler.Object);



protected void MockHttpResponse(string url, string mockedResponse)
{
fakeHttpMessageHandler.Setup(f => f.Send(It.Is<HttpRequestMessage>(x => x.RequestUri.AbsoluteUri == url))).Returns(new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent(mockedResponse)
});
}

如有任何建议,我将不胜感激 - 我将在我的本地机器上启动我自己的独立服务器,并以 1 秒的延迟返回固定响应,以确保我不会超过我的开放连接限制并抛出异常..但是这仍然是手动测试。

最佳答案

Craig,我想你使用 moq 库?

试试 .Callback(() => Interlocked.Increment(ref calls));

例如,在您的类(class)中:

private int calls = 0;
public int Calls {get {return Interlocked.Read(ref calls);}}

protected void MockHttpResponse(string url, string mockedResponse)
{
fakeHttpMessageHandler.Setup(f => f.Send(It.Is<HttpRequestMessage>(x => x.RequestUri.AbsoluteUri == url))).Returns(new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent(mockedResponse)
}).Callback(() => Interlocked.Increment(ref calls));
}

关于c# - 我如何测试我的代码在我的 c# .net 核心项目中一次打开的请求连接不超过 50 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54756395/

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