【问题标题】:make a soapui mock REST service that can return a 429 status code制作一个可以返回 429 状态码的 soapui 模拟 REST 服务
【发布时间】:2020-08-20 15:49:18
【问题描述】:

我有 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]

我显然在这个设置中遗漏了一些基本细节。

【问题讨论】:

  • 你可以使用Script Dispath来达到同样的效果。
  • 我假设您的意思是“脚本调度”。但是,我需要更多信息。通过遍历对象树并查看所有选项,我能够发现模拟操作上的选项之一是将调度类型从序列更改为脚本,并且文本框显示了一些简单的示例,但我需要有关我可以在该框中做什么的更多信息。
  • scrpt 将在收到请求时运行。这基本上是让我们对请求做我们想做的事情,并以我们想要的编程方式发送响应。

标签: soapui


【解决方案1】:

添加对模拟服务的响应以返回 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"
}

即使这是一个老问题,我也会发布回复。它可能对其他人有用。

【讨论】:

  • 在我的帖子中,您会注意到当我打印“mockRequest”时,它是空的。这让我相信“mockResponse”也将为空。我想这与这个模拟服务器的更高级别的配置有关,但我不知道那会是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多