如何测试 Mule 应用程序流程?

How to test a Mule application flow?

我被分配了以下关于当前生产中的 Mule 流应用程序的任务:

我有 Java 核心和 SQL 方面的知识,但没有 Mule 的背景。我能问的人都是一样的情况。

一旦我启动了应用程序包(当前正在生产的那个)并 运行,我就停止了它并将以下元素添加到流程中:

  1. 在带有一些初始任务的 子流 中,我添加了一个 数据库元素 来存储正在使用的计算机的 IP网络服务(user_request 是我刚刚在存储 IP 和连接日期的数据库中创建的 table。):

insert into user_request values (#[MULE_REMOTE_CLIENT_ADDRESS], #[function:datestamp:dd-MM-yy])

  1. 要询问网站,数据库元素 执行select 查询以提供带有一些输入的选择。根据这些输入的值,是否对网站完成请求:

数据库(Select)-->选择-->根据select输出

询问或不访问网站

所以,我在 数据库中添加了执行 select 的元素 和 user_request [=73] 的附加输出=] 用于当前 IP 和当天,因此它可以像往常一样为 choice 提供原始输入以及这个额外的输入(我只复制我添加的 suquery):

SELECT COUNT(*) as TRIES FROM USER_REQUEST 
WHERE IP_ADDRESS=#[MULE_REMOTE_CLIENT_ADDRESS] 
AND REQUEST_DATE=#[function:datestamp:dd-MM-yy] 
  1. 选项中,我在最后问网站的路径中添加了这个条件:

#[payload.get(0).TRIES < 10]

达到这一点,应用程序运行并且没有错误,但我不知道如何测试它。流程从哪里开始?我如何以用户身份对其进行测试?

此外,如果您发现我上面使用的语法有任何错误,请告诉我。

提前致谢!!!

munit 会要求你先学习这个过程的基础知识,但它是 mule 的主要测试工具。有了它,您将创建一个测试套件来执行各种流程,并验证在给定已知输入时是否以重复 table 方式进行正确处理。在测试中,您可以模拟关键调用,例如写入您的数据库,以便实际调用但实际上不会完成,以免修改您的数据库 table。同样,在从数据库读取时,您可以实际调用以获取已知数据,或者返回模拟测试数据以执行流程中的所有路径。