测试检查的代码中抛出的两个异常示例:
if (request.GroupId <= 0)
{
throw new BadRequestException($"A valid {nameof(Data.Models.Group)} Id must be provided.");
}
var group = await Database.Groups.FindAsync(request.GroupId);
if (group == null)
{
throw new EntityNotFoundException($"{nameof(Data.Models.Group)} not found.");
}
使用上述代码,当运行测试时,任何BadRequestException
都会通过,但任何需要EntityNotFoundException
类提供NotFound
响应的测试都会产生以下错误:
Exception Message:
Test method MyProject.Test.Tests.Integration.Group.DeleteGroupTests.DeleteGroup_IdDoesNotExist_NotFound threw exception:
System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: ---> MyProject.Data.Exceptions.EntityNotFoundException: Group not found.
Stack Trace:
DeleteGroupCommandHandler.Handle(DeleteGroupCommand request, CancellationToken cancellationToken) line 40
RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
...
EntityNotFoundException-失败
public class EntityNotFoundException : ExceptionBase
{
private static string DefaultMessageHeader => "Not found";
public override HttpStatusCode StatusCode => HttpStatusCode.NotFound;
public EntityNotFoundException(string message, string messageHeader = null)
: base(message, messageHeader ?? DefaultMessageHeader) { }
}
public class BadRequestException : ExceptionBase
{
private static string DefaultMessageHeader => "Bad Request";
public override HttpStatusCode StatusCode => HttpStatusCode.BadRequest;
public BadRequestException(string message, string messageHeader = null)
: base(message, messageHeader ?? DefaultMessageHeader) { }
}
测试:
// FAILS
[DataTestMethod]
[DataRow(int.MaxValue)]
public async Task DeleteGroup_IdDoesNotExist_NotFound(int groupId)
{
var response = await Client.DeleteAsync($"/api/groups/{groupId}");
response.StatusCode.Should().Be(HttpStatusCode.NotFound);
}
// PASSES
[DataTestMethod]
[DataRow(0)]
[DataRow(-1)]
public async Task DeleteGroup_InvalidId_BadRequest(int groupId)
{
var response = await Client.DeleteAsync($"/api/groups/{groupId}");
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
}
找到了修复测试的解决方案,但仍然不确定为什么错误只发生在EntityNotFoundException
异常类而不发生其他异常类。
如果有人知道为什么下面的代码修复了失败的测试,我很想听听。
解决方案是指定HttpCompletionOption.ResponseHeadersRead
标志,该标志在DeleteAsync
中不可用,因此切换到SendAsync
。
using var response = await Client.DeleteAsync($"/api/groups/{groupId}");
using var response = await Client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, $"/api/groups/{groupId}"), HttpCompletionOption.ResponseHeadersRead);
问题内容: 我正在尝试解析任何给定页面的HTML转储。我使用了HTML Parser ,还尝试了JSoup进行解析。 我在Jsoup中找到了有用的功能,但调用时却收到403错误 我尝试使用HTTPClient来获取html转储,并且对于相同的url成功。 为什么JSoup会为403提供相同的URL,而该URL正在提供来自Commons HTTP客户端的内容?难道我做错了什么?有什么想法吗? 问题答
我有一个包含属性的对象,该属性是包含两个字符串属性的对象列表。我的目标是将此映射的键与另一个包含字符串属性的对象进行比较。 为了更清楚我的请求包含地图: 我的sharePointDriveResponse包含以下列: 在这个阶段,我实现了一些工作正常的东西: 我的问题如下: 在这里传输数据时是否可能引发异常 在示例中:我发送一个创建文档的请求,并传递一个不允许文档使用但允许其他内容类型使用的字段。
此代码的输出是 这意味着异常将由<代码>接收器重新引发。下一步(i) 在推送方法和非推送错误反应通道中。为什么?
原因:mpl.java:1482无法使受保护的本机org.powermock.reflect.internal.对象mpl.findOmpl.java:862()抛出org.powermock.reflect.internal.CloneNotSupport异常可访问:模块mpl.do不会打开mpl.java:822到未命名的模块@5be6e01c在org.powermock.reflect.in
我有一个异步函数,它将一些数据插入数据库(使用Mariadb)。由于重复的唯一键,此插入可能会失败,因此它会抛出错误(实际上确实如此),但当我尝试再次抛出它以通过Promise捕获它时,它不起作用;它似乎总是以成功的案例结束,即使它抛出了错误。 我尝试改变then/catch顺序,我使用了< code > reject(err);而不是< code >抛出err但是这些都不起作用。 这是POST声
你有什么想法吗??我不知道该怎么办了:/ 13449[MyScheduler_Worker-1]错误org.quartz.core.jobrunshell-Job group1.jobreport引发了一个未处理的异常:java.lang.nullpointerexception at com.changes.bean.reportsbean.createpdfCriticalChanges(re