【发布时间】:2021-06-30 00:37:57
【问题描述】:
我需要在 Anypoint Studio 中同时运行 Munit 2 和应用程序。
流程如下:
-
我们有两个应用程序(项目)A 和 B。应用程序 A 包含 http 侦听器端点流 fA1。当这里接收到数据时,它会将转换后的 JSON 数据发送给第三方,命名为 X。
-
现在,假设我在应用程序 B 中有流 fB1,其中包含一个 http 侦听器端点,该端点(流 fB1)从 X 接收 JSON 通知。流 fB1 基于此进行一些处理,并将其转换为另一种 JSON 格式。该格式被发送到应用程序 A。
-
现在,应用程序 A 在 http 侦听器端点流 fA2 接收数据,并在此基础上进行一些处理。
所以整个流程是 A -> X -> B -> A
问题是:我正在为整个流程编写 Munit。在第 1 点,我提到我们从 A 向应用程序 X 发送数据,而 X 向 B 发送数据。但是 B 应用程序已关闭,因为 Anypoint 不允许 Munit 和应用程序同时运行,所以我无法从X。 为了使它工作,我必须在应用程序和模拟通知的 Munit 中复制应用程序 B 的整个逻辑。他们是否有任何解决方法,以避免将代码从应用程序 B 复制到应用程序 A 的 Munit?我尝试了并行部署,但它根本不起作用。
如果你们中的任何人有解决方案或指点,请指导。
【问题讨论】:
-
你只需要在你对应用A的测试中模拟应用B的一个有代表性的响应。应该不需要完全模拟应用B本身的行为。
-
感谢您的回复,问题是当我们从应用程序 B 接收到 A 的数据时。我们必须在应用程序 A 中进行逻辑验证,以验证我们是否收到了 X 的任何数据和其他处理的数据。我们正在努力使其更加实时。我无法在这里解释,因为它可能会变得冗长......
-
但是您不需要在应用程序 A 的测试中使用应用程序 B,您只需通过提供代表性响应来模拟应用程序 B。因此,如果 A 将一些数据发送到 X 的模拟,并且 B 的模拟(或驱动程序/存根)注入一个有代表性的响应。假设您的测试是确定性的,您不必模拟应用程序 B 的逻辑,与测试匹配的固定响应就足够了(如果需要,可能对 id 和时间戳进行一些参数化)。
-
感谢分享
标签: mule mule-studio mule4 munit