【问题标题】:WSO2 ESB Unit TestingWSO2 ESB 单元测试
【发布时间】:2015-07-03 08:59:47
【问题描述】:

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

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

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

例子:

  • 真正的服务正在监听端口 8280
  • Wiremock 正在监听端口 8281
  • 我们需要动态更改代理内的端点,让它调用Wiremock服务(8281)而不是真正的(8280)

如果有其他测试方法,我很乐意探索不同的解决方案...

【问题讨论】:

    标签: unit-testing wso2 wso2esb wiremock


    【解决方案1】:

    我无法正确回答您的问题...您不能在您的代理服务中提及端口为 8281 的端点 url...吗??

    【讨论】:

    • 按照你的建议去做,它不会是动态的。我的意思是,应该有 2 个代理定义。他试图改变的是动态代码中的端点
    • 嗨哈维尔,我们究竟要在哪里添加您的代码...类中介?
    【解决方案2】:

    终于找到解决问题的办法了。

    使用注册表的端点,您可以从注册表中获取资源、更改它们并更新它。

    例如,您可以执行以下操作:

    AutomationContext esbContext = new AutomationContext("ESB", TestUserMode.SUPER_TENANT_ADMIN);
    String esbSession = esbContext.login();
    
    ResourceAdminServiceClient resourceClient = new ResourceAdminServiceClient(esbContext.getContextUrls().getBackEndUrl(),
                esbSession);
    
    String endpoint = resourceClient.getTextContent("/_system/governance/endpoints/HelloService.xml")
                .replace(":8280", String.format(":%s", port));
    
    resourceClient.updateTextContent("/_system/governance/endpoints/HelloService.xml", endpoint);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多