java - 使用wiremock时返回自定义异常
问题描述
我需要在模拟像这样的 url 时返回自定义异常
每当我点击 /test/user/get/ 时,我都需要返回 UserNotFoundException。
我正在尝试这样做。有人可以帮我如何在wiremock中返回异常吗
public void setupWiresMockStubs(String body, int status) {
wireMockServer.stubFor(post(urlEqualTo(
"/test/user/get"))
.willReturn(aResponse().withHeader("Content-Type", "application/json")
.withBody(body)
.withStatus(status)));
}
解决方案
您不能返回异常。API 应该返回一个状态码和一个正文。
假设您的 API 在出现异常 UserNotFoundException 时返回 BadRequest(http 代码 400):
@PostMapping(value = "/test/user/get")
public String myApi(@RequestParam String param1) {
try {...
} catch(UserNotFoundException e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "user not found");
您可以通过以下方式模拟上述 API:
WireMock.stubFor(WireMock.post(WireMock.urlPathEqualTo("/test/user/get"))
.willReturn(aResponse().withStatus(400).withBody("user not found")));
甚至更好 - 在 Wiremock 中有预定义的错误(ResponseDefinitionBuilder):
WireMock.stubFor(WireMock.post(WireMock.urlPathEqualTo("/test/user/get"))
.willReturn(badRequest().withBody("user not found")));
您在 Wiremock 中有各种预定义的错误:
badRequest(), unauthorized(), notFound() etc.
推荐阅读
- html - 在我可以排除某些类型的文件吗?
- flutter - 如何仅覆盖颤振中类的构建方法?
- c# - Unity Firebase 实时数据库链接 LimitTo 调用仅执行最后一个 LimitTo
- android - 切换主题会降低对 Android 6 活动的关注
- ios - 无法使用类型为“UIImagePickerController.InfoKey”的参数为类型为 [String : AnyObject] 的值下标
- stripe-payments - Flutter Web - Stripe 集成的对话框弹出窗口
- javascript - 如何在同一个php文件中的php代码之后运行javascript代码?
- reactjs - 是否可以定义一个 React 不受控制的功能组件(没有类)?
- python - 如何使 GluonTS / Apache mxnet 中的培训信息静音?
- database - 在将数据发送回用户之前,有什么方法可以聚合数据?