章节目录:

EDI 客户端是用来发送 EDI 消息的工具。目前支持 AL3、CARGO、EANCOM、EDIFACT、EDIGAS、HIPAA, HL7、IATA、NCPDP、TELCO、TRADACOMS 和 X12。它允许您使用 XML,从而简化了 EDI 的使用(EDI 通常很难阅读)。您可以将 EDI 请求负载作为 XML 文档来建模;然后客户端在发送消息之前自动将 XML 转换为 EDI。如果服务端返回 EDI 消息,则客户端可以将该消息转换为 XML,以便您可将像 XML 断言器和 XML 数据库这样的工具附加到响应中。

创建新的 EDI 客户端

若要创建新的 EDI 客户端:

  1. 创建新的空 .tst 文件:
    1. 前往文件> 新建> 项目
    2. 选择 SOAtest> 空项目,点击下一步
    3. 输入项目名称,然后点击完成
  2. 创建新的 EDI 客户端:
    1. 右键点击新的测试套件节点,然后选择新建> 测试
    2. 选择 EDI 客户端,点击完成
  3. 点击新工具的请求选项卡,将输入模式更改为字面量
  4. 粘贴以下文本:

    UNA:+.? ~
    UNB+IATB:1+6XPPC+LHPPC+940101:1950+1~ 
    UNH+1+PAORES:93:1:IA~
    MSG+1:45~
    IFT+3+XYZCOMPANY AVAILABILITY~
    ERC+A7V:1:AMD~
    IFT+3+NO MORE FLIGHTS~
    ODI~
    TVL+240493:1000::1220+FRA+JFK+DL+400+C~ 
    PDI++C:3+Y::3+F::1~
    APD+74C:0:::6++++++6X~
    TVL+240493:1740::2030+JFK+MIA+DL+081+C~ 
    PDI++C:4~
    APD+EM2:0:1630::6+++++++DA~
    UNT+13+1~
    UNZ+1+1~
  5. 将输入模式从纯文本更改为表单输入,然后确认是否希望覆盖值。注意行话版本消息类型自动完成。
  6. 点击传输选项卡,在路由端点字段输入 http://localhost:8080/parabank/echo.jsp,然后保存编辑器设置。
  7. 运行 EDI 客户端。 
  8. 打开通讯报文查看器。

注意,请求以 EDI 格式发送。然而,也请注意,每行都以单引号字符而不是原始消息中的“~”字符结尾。默认情况下,EDI 客户端使用功能不同的段分隔字符与我们希望在消息中发送的分隔符不同。

设置 EDI 转换选项

现在,请确保使用正确的段分隔器发送 EDI 内容(在行末尾的字符)。

  1. 添加比较输出:
    1. 右键点击 EDI 客户端,选择添加输出
    2. 点击左侧的请求 > 有效负载,然后点击右侧的比较,点击完成
  2. 将相同文本(如上显示)粘贴到比较工具。
  3. 点击选项选项卡并启用忽略空格。当上述文本复制并粘贴到比较工具时,将插入新行字符。启用此选项将放置这些字符被差异报告。
  4. 保存比较工具。
  5. 重新运行 EDI 客户端。测试应该失败,错误是更改了 16 行。这是预期的,因为 EDI 使用的段分隔器与原始消息不同。
  6. 更改 EDI 客户端的转换选项:
    1. 打开工具的转换选项选项卡。
    2. 找到段落分隔符选项,输入 ~(波浪符)。
    3. 保存 EDI 客户端。
  7. 重新运行 EDI 客户端。现在它将成功。

注意,十进制分隔符为逗号(',')而不是句号('.')的地区,您将在第一行看到单个测试失败。这是由于十进制分隔符间的差异。

配置 EDI 消息

使用 EDI 客户端的其中一项主要原因是能够让您轻松地配置 EDI 消息。让我们参数化 EDI 消息中的一个字段。

  1. 创建新的表格数据源:
    1. 右键点击测试套件节点,选择新建> 数据源
    2. 选择表格,点击完成
    3. 将数据源命名为 Companies
    4. 启用第一行指定列名
    5. 在第一列中,输入 Company Availability 作为列名,然后分别在行 1 和 2 中输入 XYZCOMPANY AVAILABILITYPARASOFT AVAILABILITY
    6. 保存数据源。
  2. 复制创建的第一个 EDI 客户端(右键点击客户端吧,选择赋值),并将其粘贴到相同的测试套件中。
  3. 在新的 EDI 客户端中,删除与请求有效负载关联的比较工具(右键点击该工具并选择删除
  4. 在 EDI 客户端的请求选项卡中,确保将输入模式设置为表单输入
  5. 在表单输入显示的树结构中,点击第一个 IFT02-FreeText 节点(该节点完整路径为 "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText")。
  6. 在右侧将固定值更改为参数化

    右侧的下拉框应显示名为公司可用性的数据源列。
  7. 保存 EDI 客户端。
  8. 运行测试。
  9. 打开通讯报文查看器以用于测试 2: EDI 客户端,并注意运行该测试两次:对数据源中的每一行执行一次。

验证 EDI 内容

我们已经配置了 EDI 客户端,以便将请求发送到一个服务,该服务只是简单地回显发送的请求。因此,EDI 客户端在响应中获得的 EDI 内容与在请求中发送的一样。让我们对这个 EDI 内容进行验证。

  1. 添加新的 XML 断言器输出:
    1. 右键点击参数化 EDI 客户端(第二个),选择添加输出
    2. 点击左侧的转换为 XML 的响应有效负载,然后点击右侧的 XML 断言器,点击完成
  2. 重新运行测试以填充 XML 断言器的内容。
  3. 配置 XML 断言器,如下所示:
    1. 点击该 XML 断言器的配置选项卡。
    2. 点击添加,选择断言,然后点击下一步
    3. 选择断言并点击下一步
    4. 在显示的树中,选择第一个 IFT02-FreeText 节点(该节点完整路径为 "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText"),然后点击完成
    5. 输入 XYZCOMPANY AVAILABILITY预期字段。
    6. 保存 XML 断言器。
  4. 运行测试。  它应该失败,并携带消息 'DataSource: Companies (row 2): 值断言:For element "../IFT02-FreeText", expected: XYZCOMPANY AVAILABILITY but was: PARASOFT AVAILABILITY '。

    出现这种错误匹配是因为请求已参数化,但 XML 断言器没有参数化。
  5. 将 XML 断言器中的预期值字段更改为参数化。右侧下拉框应显示数据源中名为“公司可用性”的列。
  6. 保存 XML 断言器。
  7. 运行测试。现在,它应该成功。

与这些练习相关的 .tst 文件可以在 <SOATEST_INSTALL_DIR/examples/tests/EDI中找到。

  • No labels