Unit testing WSO2 ESB单元测试
我们在WSO2 ESB中开发了一个代理服务,它是一个编排器,并调用多个服务来聚合响应 如何测试代理流的每个步骤(或中介),以及系统如何对每个可能的情况做出反应(例如,成功、失败、响应时间慢 对于每个步骤,我们尝试模拟代理调用的每个服务的行为(使用Wiremock),但我们无法动态更改每个调用所指向的端点(或端口) 例如:Unit testing WSO2 ESB单元测试,unit-testing,wso2,wso2esb,wiremock,Unit Testing,Wso2,Wso2esb,Wiremock,我们在WSO2 ESB中开发了一个代理服务,它是一个编排器,并调用多个服务来聚合响应 如何测试代理流的每个步骤(或中介),以及系统如何对每个可能的情况做出反应(例如,成功、失败、响应时间慢 对于每个步骤,我们尝试模拟代理调用的每个服务的行为(使用Wiremock),但我们无法动态更改每个调用所指向的端点(或端口) 例如: 真正的服务是监听端口8280 Wiremock正在端口8281上侦听 我们需要动态地改变代理中的端点,让它调用Wiremock服务(8281),而不是真正的服务(8280)
- 真正的服务是监听端口8280
- Wiremock正在端口8281上侦听
- 我们需要动态地改变代理中的端点,让它调用Wiremock服务(8281),而不是真正的服务(8280)
如果有其他的测试方法,我很乐意探索不同的解决方案…我无法正确回答您的问题。。。您不能在代理服务中提到端口为8281的端点url吗…?我无法正确回答您的问题。。。您不能在代理服务中提到端口为8281的端点url吗…?最终找到了问题的解决方案 使用注册表的端点,您可以从注册表中获取资源,对其进行更改和更新 例如,您可以执行以下操作:
AutomationContext-esbContext=newautomationcontext(“ESB”,TestUserMode.SUPER\u-TENANT\u-ADMIN);
字符串esbSession=esbContext.login();
ResourceAdminServiceClient resourceClient=新的ResourceAdminServiceClient(esbContext.getContextUrls().getBackEndUrl(),
ESBSISION);
String endpoint=resourceClient.getTextContent(“/_system/governance/endpoints/HelloService.xml”)
.replace(“:8280”,String.format(“:%s”,port));
updateTextContent(“/_system/governance/endpoints/HelloService.xml”,endpoint);
终于找到了问题的解决方案
使用注册表的端点,您可以从注册表中获取资源,对其进行更改和更新
例如,您可以执行以下操作:
AutomationContext-esbContext=newautomationcontext(“ESB”,TestUserMode.SUPER\u-TENANT\u-ADMIN);
字符串esbSession=esbContext.login();
ResourceAdminServiceClient resourceClient=新的ResourceAdminServiceClient(esbContext.getContextUrls().getBackEndUrl(),
ESBSISION);
String endpoint=resourceClient.getTextContent(“/_system/governance/endpoints/HelloService.xml”)
.replace(“:8280”,String.format(“:%s”,port));
updateTextContent(“/_system/governance/endpoints/HelloService.xml”,endpoint);
按照您的建议进行操作,它不会是动态的。我的意思是,应该有两个代理定义。他试图改变的是动态代码中的端点Hi Javier,我们到底要在哪里添加您的代码。。。类mediatior?按照您的建议,它不会是动态的。我的意思是,应该有两个代理定义。他试图改变的是动态代码中的端点Hi Javier,我们到底要在哪里添加您的代码。。。阶级中介?