使用swagger运行Web API核心集成测试时出错
我在为一种方法执行集成测试以在dynamics crm中发布数据时遇到以下错误。这是我第一次编写集成测试,其中我的项目是用于招摇过市的web api和一些azure资源,如key vault、active directory 在执行Get调用时,它似乎运行良好,所有步骤都已执行,并且也得到了结果。但对于Post调用,我可以看到调用成功,并且插入了最新调用的数据库记录,但在从PostAsync方法将Execution point返回到集成测试时,它在这两者之间失败 以下是错误:使用swagger运行Web API核心集成测试时出错,swagger,integration-testing,asp.net-core-webapi,azure-keyvault,Swagger,Integration Testing,Asp.net Core Webapi,Azure Keyvault,我在为一种方法执行集成测试以在dynamics crm中发布数据时遇到以下错误。这是我第一次编写集成测试,其中我的项目是用于招摇过市的web api和一些azure资源,如key vault、active directory 在执行Get调用时,它似乎运行良好,所有步骤都已执行,并且也得到了结果。但对于Post调用,我可以看到调用成功,并且插入了最新调用的数据库记录,但在从PostAsync方法将Execution point返回到集成测试时,它在这两者之间失败 以下是错误: Message:
Message:
System.IO.IOException : The request was aborted or the pipeline has finished
Stack Trace:
ResponseStream.CheckNotComplete()
ResponseStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
ErrorHandller.InvokeAsync(HttpContext context)
AuthenticationMiddleware.Invoke(HttpContext context)
StaticFileMiddleware.Invoke(HttpContext context)
SwaggerUIMiddleware.Invoke(HttpContext httpContext)
SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
CorrelationIdMiddleware.Invoke(HttpContext context, ICorrelationContextFactory correlationContextFactory)
<<SendAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
GeoIntegrationTest.Test_AddState() line 72
--- End of stack trace from previous location where exception was thrown ---
消息:
System.IO.IOException:请求已中止或管道已完成
堆栈跟踪:
ResponseStream.CheckNotComplete()
ResponseStream.WriteAsync(字节[]缓冲区、Int32偏移量、Int32计数、CancellationToken CancellationToken)
ErrorHandler.InvokeAsync(HttpContext上下文)
AuthenticationMiddleware.Invoke(HttpContext上下文)
StaticFileMiddleware.Invoke(HttpContext上下文)
SwaggerUIMiddleware.Invoke(HttpContext HttpContext)
调用(HttpContext HttpContext,ISwaggerProvider swaggerProvider)
调用(HttpContext上下文,ICorrelationContextFactory correlationContextFactory)
d、 MoveNext()
---来自引发异常的上一个位置的堆栈结束跟踪---
SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
HttpClient.FinishSendAsyncBuffered(任务'1 sendTask,HttpRequestMessage请求,CancellationTokenSource cts,布尔处理)
GeoIntegrationTest.Test\u AddState()第72行
---来自引发异常的上一个位置的堆栈结束跟踪---
代码如下所示
public async Task Test_AddState()
{
try
{
var data = new StateRequestModel
{
StateCode = "AL",
Name ="Alabama",
}
};
ByteArrayContent byteContent = BuildRequestObject(data);
var response = await httpClient.PostAsync("api/Geo/AddState", byteContent);
var result = response?.Content.ReadAsStringAsync().Result;
var addStateReposne = (ResponseModel<List<string>>) JsonConvert.DeserializeObject(result);
Assert.NotNull(result);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
catch (Exception ex)
{
throw;
}
}
公共异步任务测试\u AddState()
{
尝试
{
var data=新的StateRequestModel
{
StateCode=“AL”,
Name=“阿拉巴马州”,
}
};
ByteArrayContent byteContent=BuildRequestObject(数据);
var response=wait-httpClient.PostAsync(“api/Geo/AddState”,字节内容);
var result=response?.Content.ReadAsStringAsync().result;
var addStateReposne=(ResponseModel)JsonConvert.DeserializeObject(结果);
Assert.NotNull(结果);
Assert.Equal(HttpStatusCode.OK,response.StatusCode);
}
捕获(例外情况除外)
{
投掷;
}
}
请帮助我解决此问题,并建议我是否可以提高代码质量。因此,我只能自己解决它。问题在于超时是由于某个长时间运行的进程超过了HttpClient对象的默认超时 client.Timeout=System.TimeSpan.FromMinutes(5) 谢谢大家