Karate 如何在空手道中直接匹配DB查询结果和API响应

Karate 如何在空手道中直接匹配DB查询结果和API响应,karate,intuit,Karate,Intuit,我的代码如下=> @用户验证邮件 Feature: Verify User Details Scenario: Verify User Details api Given url 'http://127.0.0.1/user/?id=123' When method get Then status 200 * def DbUtils = Java.type('com.intuit.karate.treebo.util.DbUtils') * d

我的代码如下=> @用户验证邮件

Feature: Verify User Details 

  Scenario: Verify User Details api

    Given url 'http://127.0.0.1/user/?id=123'
    When method get
    Then status 200

    * def DbUtils = Java.type('com.intuit.karate.treebo.util.DbUtils')
    * def db = new DbUtils()

    * def query = "SELECT * FROM user_table where id = 123"
    * def dbResult = db.readRows(query)


    * match dbResult[0] contains response.data
API调用的响应为=>

数据库上的查询响应为=>

[print] dbResult: [{id=123, password=bZeGU3h66cp, created_at=2018-01-18 15:57:24.631959, modified_at=2018-01-18 15:57:24.641493, first_name=Foo, last_name=Bar, email=foo@bar.com, phone_number=null}]
尝试使用contains匹配上述两个结果时,我得到以下错误:

Tests in error: 
  * match dbResult[0] contains response.data(Scenario: Verify User Details api): path: $[0].created_at, actual: 2018-01-18 15:57:24.631959, expected: '2018-01-18T10:27:24.631959', reason: actual value is not a string

我怎样才能将DB查询的结果直接与API响应匹配?

让我们看看消息:

path: $[0].created_at, actual: 2018-01-18 15:57:24.631959, expected: '2018-01-18T10:27:24.631959'
reason: actual value is not a string
显然,返回的结果行中有一个
java.util.Date
或类似的值,而不是字符串。即使它是一个字符串,请注意值也不相同

将该字段转换为字符串并进行比较。或者,这很可能对你有用-在比较之前先这样做:

* set response.data.created_at = '#ignore'
如果您需要进一步了解,请阅读关于模糊匹配的文档:

* set response.data.created_at = '#ignore'