在soapUI的可让您只需从WSDL基础服务创建一个基于WSDL服务的符合标准的模拟。被称为“MockService”,这可以直接从内部的soapUI运行,命令行浇道,或甚至标准servlet容器。
一个MockService符合公认的WSDL,SOAP,HTTP标准,客户应该能够使用它,就好像它是一个真正的服务。
1. MockService模型
MockServices模拟通过暴露任意数量的MockOperations提供他们的服务。其中每个又可以包含任何数量的配置的MockResponse消息,下面的模型:
- MockService,包含
- MockOperations,包含
- MockResponses
在soapUI的一个例子MockService如下所示;
这里MockService包含四个MockOperations其中每个包含不同数量MockResponse消息。
当接收由MockService一个SOAP请求和分派到特定MockOperation,相应MockResponse基于所配置的MockRequest分派器被选择。
每个MockOperation对应在您的测试项目的一个WSDL服务的WSDL操作,包含的MockResponse消息从与操作相关联模式中创建。这并不意味着一个MockResponse必须遵守相关联的模式,它可以返回任意XML或短信,你可能例如配置它对完全不同的操作各返回一个响应消息,从而使您可以测试有能力处理无效的和意想不到的响应消息。
创建MockService是直线前进,最简单的就是从WSDL服务通过服务右键菜单生成它Generate MockService action。在打开的对话框让你选择哪些操作应该被Mock,并填写MockService上的路径或端口:
确保路径和端口设置控制在其上MockService可用,确保尚未使用你的系统上运行的其他服务器软件选定端口的URL。
快速提示: 您可以在同一端口和路径上创建多个MockServices,soapUI的会问每个依次调度传入的请求,直到请求被处理。
设置所需的配置和后点击OK,一个MockService被添加到项目中,双击它打开MockService窗口:
顶部包含一个操作选项卡显示配置MockOperations,下面就是标签添加的说明:
- 启动脚本:当MockService开始调用,用它来 初始化
- 停止脚本:调用时MockService停止,用它来 清理,自定义报表等。
- OnRequest脚本:调用时MockService接收来自外部客户端的请求,用它来 提供定制的mocking行为。
- AfterRequest脚本:当请求到MockService已处理后被调用,用于使用该定制数据收集或报告。
2.运行您的MockService
当点击运行按钮,MockService是soapUI的内立即启动,就可以看到这一点,如果你点击日志选项卡的soapUI窗口的底部;
该MockService现在已准备好根据配置的路径和端口处理传入的SOAP请求。这些将基于其内容被分派到的相应MockOperation,如果没有匹配MockOperation会有一个标准的SOAP错误返回:
在这里,我们已经发送SOAP请求到一个无mocking的MockService,返回错误信息。
2.1。查看分派消息
消息日志在底部显示MockService最后的收到的请求; 双击一个条目以查看请求和返回的响应的实际内容,例如:
快速提示: 您可以通过取消选中启用选项在消息日志查看器禁用日志,这将节省内存和CPU性能。
3.查看协议
如上所述,监听到配置的路径和端口上的请求后该服务立即启动。此外,它也暴露了MockServic的WSDL网址; 例如输入HTTP://本地主机:8088 / mockSampleServiceBinding WSDL在浏览器中显示的WSDL:
请注意,MockOperation可以从潜在地两个不同的WSDL包含MockOperations,在这种情况下,生成的WSDL将是所有被mock的包装WSDL。
也暴露了WSDL包含实际的HTTP地址暴露在MockService:
如果你想通过WSDL从远程计算机来访问你的MockServices,那么这个选项对话框可以修改主机域。重命名它:
这个结果在下面的节点暴露在WSDL:
4. MockService请求调度
有许多可用设置有关的soapUI如何分派收到的消息,可通过左下方的MockService属性选项卡:
如下所示:
- 匹配的SOAP版本:需要使用和所配置MockOperation请求相同的SOAP版本。如果它被设置为false一个SOAP 1.2请求可以被分派到一个SOAP 1.1 MockOperation。
- 需要SOAP动作:该选项控制是否需要soapUI检查SOAP动作HTTP头分配到正确的MockOperation。
- Dispatch的回应:you might want to use the ReplyTo Header in a request when working with WS-Addressing to direct the response to a soapUI MockService. If this is the case soapUI will actually be receiving a response message, which is not supported unless this specific option is set to true, in which case soapUI will dispatch the request as if it was a request for the received response. Further, if the received response is a SOAP Fault, for example via the Fault-To header, an option in the MockService Options dialog is available for telling soapUI how to dispatch this since Fault messages usually are generic: