Unit testing WSO2 ESB单元测试

Unit testing WSO2 ESB单元测试,unit-testing,wso2,wso2esb,wiremock,Unit Testing,Wso2,Wso2esb,Wiremock,我们在WSO2 ESB中开发了一个代理服务,它是一个编排器,并调用多个服务来聚合响应 如何测试代理流的每个步骤(或中介),以及系统如何对每个可能的情况做出反应(例如,成功、失败、响应时间慢 对于每个步骤,我们尝试模拟代理调用的每个服务的行为(使用Wiremock),但我们无法动态更改每个调用所指向的端点(或端口) 例如: 真正的服务是监听端口8280 Wiremock正在端口8281上侦听 我们需要动态地改变代理中的端点,让它调用Wiremock服务(8281),而不是真正的服务(8280)

我们在WSO2 ESB中开发了一个代理服务,它是一个编排器,并调用多个服务来聚合响应

如何测试代理流的每个步骤(或中介),以及系统如何对每个可能的情况做出反应(例如,成功、失败、响应时间慢

对于每个步骤,我们尝试模拟代理调用的每个服务的行为(使用Wiremock),但我们无法动态更改每个调用所指向的端点(或端口)

例如:

  • 真正的服务是监听端口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,我们到底要在哪里添加您的代码。。。阶级中介?