soapui - 制作一个可以返回 429 状态码的 soapui 模拟 REST 服务
问题描述
我有 SoapUI(免费)v5.4.0。
我需要实现一个返回 429(请求太多)状态代码的模拟服务。看来 mockservice 允许我设置响应状态代码,但我只能从下拉列表中选择它,并且 429 不是选项之一。如何自定义模拟服务以返回真正自定义的值而不是下拉列表中的值之一?
更新:
我尝试将模拟动作从“序列”更改为“脚本”。然后我尝试了一个非常简单的脚本,如下所示:
mockRequest.httpResponse.status = 429
然后我单击“播放”按钮,当我使用“序列”时,这只会启动侦听器并等待请求进入。相反,当我单击“播放”按钮时,它立即失败:
com.eviware.soapui.impl.wsdl.mock.DispatchException: Failed to dispatch
using script; java.lang.NullPointerException: Cannot get property
'httpResponse' on null object
然后我在此行之前添加了如下一行:
log.info("mockRequest[" + mockRequest + "]")
当我再次单击播放时,它会在脚本日志中打印:
Sat Jan 18 08:53:24 PST 2020:INFO:mockRequest[null]
我显然在这个设置中遗漏了一些基本细节。
解决方案
向模拟服务添加响应以返回 429 错误代码。我将响应命名为“响应 429”。在“响应 429”的脚本部分中设置 http 状态。
mockResponse.setResponseHttpStatus(429)
我有其他模拟场景来测试 HTTP 状态代码为 200 和 500 的响应。我使用查询参数“returnCode”来获得不同的响应。mockService GET 方法的以下脚本完成了这项工作。
def returnCode = mockRequest.getRequest().getParameter("returnCode")
if( returnCode.equals("429"))
{
return "Response 429"
}
else if( returnCode.equals("500"))
{
return "Response 500"
}
else {
return "Response 200"
}
即使这是一个老问题,我也会发布回复。它可能对其他人有用。
推荐阅读
- caching - 错误无法读取 discord.js 中未定义的属性“缓存”
- julia - 如何使用 Flux.jl 嵌入
- vue.js - Vuex 错误:store.js?40cf:6 Uncaught TypeError: vuex__WEBPACK_IMPORTED_MODULE_1__.default.store is not a constructor
- visual-studio-code - 在 VS Code 1.52.1 中为断点添加声音警报?
- html - 尝试从 vscode 加载实时服务器时出现 431 错误
- angular - 将长行导入分解为多行导入
- javascript - 使用 CSS 或 jQuery 过滤博客的类别/子类别 Radio
- vue.js - 如何在 vue3 中访问 openlayers 地图的方法
- java - Android Studio Firestore 时间戳与 currentLocalTime 的比较
- python - 字典列表中的 ast.literal_eval 语法错误