首页 > 解决方案 > 空手道在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          |               

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

另外,如果我像这样在后台定义标题:

Given header Authorization = 'Bearer ' + token

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

标签: karate

解决方案


为我工作:

* 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我建议通过为列使用不同的名称来避免混淆。


推荐阅读