在 graphql 中替换空手道

Karate replace in graphql

我不确定为什么替换不起作用。 我有一个 graphql 查询:

mutation updateLocation{
  updateLocation(input: {
      address:"<address>",
      id:"<storeID>",
      name:"<name>",
      workingHours: [
                {
                closingTime:"<closingTime>",
                isClosed:false,
                openingTime:"<openingTime>"
                }
      .......

在功能文件中我有这个:

 Given def query = read ('classpath:graphQL/updateStore.graphql')
    * replace query.address = "<address>"
    * replace query.regionId = "<regionId>"
    * replace query.name = "<name>"
    * replace query.closingTime = "<closingTime>"
    * replace query.openingTime = "<openingTime>"
    * replace query.storeID = storeId
    And request { query : '#(query)'}
    When method post
    Then status 200



    Examples:
    |address            |regionId       |name        |closingTime   |openingTime    |
    |Adrs1              |286            |st1         |20:00         |10:00          |               

替换适用于地址、区域 ID 和名称,但不适用于关闭时间或打开时间,这两个值保持为空。

此外,如果我像这样在后台定义 header:

Given header Authorization = 'Bearer ' + token

我仍然必须为同一场景中的每个请求添加这一行,或者我遗漏了什么?

适合我:

* def query = 'closingTime:"<closingTime>"'
* replace query.closingTime = '20:00'
* match query == 'closingTime:"20:00"'

所以请遵循这个过程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

请注意 * replace query.closingTime = closingTime 应该可以。我建议通过为 Examples 列使用不同的名称来避免混淆。