代码之家  ›  专栏  ›  技术社区  ›  Pebermynte Lars

使用场景大纲中的示例匹配每个示例

  •  1
  • Pebermynte Lars  · 技术社区  · 6 年前

    我发现使用 * match each response.xyz 强大的功能,用于将对象结构测试与内容测试合并。有什么方法可以和它一起使用吗 Examples 表和 <placeholder> ?

    我有这样的东西,我想用一个例子表:

        * match each response.Services ==
      """
      { 
        "ServiceId" : #present, 
        "Name" : <Name>, 
        "Description" : #present, 
        "InActive" : <Inactive>, 
      }
      """
        Examples: 
      | ClientId | Name       | Status | ErrorCode | Inactive |
      |   400152 | "Foxtrot"  |    200 |         0 | false    |
      |   400152 | "Waltz"    |    200 |         0 | false    |
    

    我得到

      "Services": [
    {
      "ServiceId": 3,
      "Name": "Waltz",
      "Description": "Waltzing like Matilda",
      "InActive": false,
    },
    {
      "ServiceId": 4,
      "Name": "Foxtrot",
      "Description": "",
      "InActive": false,
    },
    

    作为回应。 显然,当我在 Examples: ,它会导致几个测试。

    我要寻找的是根据预先定义的值测试数组中的每个对象,但不知道它们的显示顺序。像表格一样使用有序的方法。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Peter Thomas    6 年前

    而不是 each 试试这个:

    * match response.Services contains
      """
      { 
        "ServiceId" : #present, 
        "Name" : <Name>, 
        "Description" : #present, 
        "InActive" : <Inactive>, 
      }
      """
    

    编辑:好的,另一个选项。顺便说一下,我至少有5种不同的想法:p

    Scenario:
    * table data
      | ClientId | Name       | Status | ErrorCode | Inactive |
      |   400152 | "Foxtrot"  |    200 |         0 | false    |
      |   400152 | "Waltz"    |    200 |         0 | false    |
    * def expected = karate.map(data, function(x){ return { ServiceId: '#present', Name: x.Name, Description: '#present', InActive: x.Inactive} })
    * match response.Services contains expected
    

    如果你能控制整个 table :

    Scenario:
    * table expected
    | Name       | InActive | ServiceId  | Description |
    | "Foxtrot"  | false    | '#present' | '#present'  |
    | "Waltz"    | false    | '#present' | '#present'  |
    * match response.Services contains expected