2

我想通过在模式断言中添加一个变量来匹配我的响应。我通过给出 '#(value)' 进行了尝试,但没有成功

 * def value = 3

    Then match object ==
    {
         result : {
                      '#(value)'
                               {
                                  firstName : '#string',
                                  lastName : '#string'
                               }
                    }
    }

我得到的异常是'path $.result.(#value) actual : null expected { firstName : '#string' lastName : '#string' }'

4

1 回答 1

3

您的 JSON 有一些严重问题。您真的要使用动态密钥吗?那是不可能的。

这是一个工作示例,可以帮助您找出自己做错了什么:

* def actual = { result: { value: 3, foo: { firstName: 'John', lastName: 'Smith' } } }
* def value = 3
Then match actual ==
"""
{
  result : {
    value: '#(value)',
    foo: {
      firstName : '#string',
      lastName : '#string'
    }
  }
}
"""

(编辑:)看起来这个问题确实是一个动态键,这是一个改变的例子:

* def actual = { result: { 3: { firstName: 'John', lastName: 'Smith' } } }
* def fun =
"""
function(key) {
  var temp = { result: {} };
  temp.result[key] = { firstName: '#string', lastName: '#string' };
  return temp;
}
"""
Then match actual == fun(3)
于 2017-11-01T08:14:20.770 回答