2017-10-12 115 views
0

接从JDBC响应数据I具有从JDBC响应步骤中产生下面的XML:无法使用Groovy脚本

<ResultSet fetchSize="64"> 
    <Row rowNumber="1"> 
     <TW341_LIMITDEFN.LIMIT_CODE>022</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>1</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>C</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 
    <Row rowNumber="2"> 
     <TW341_LIMITDEFN.LIMIT_CODE>023</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>3</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>R</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 
    <Row rowNumber="3"> 
     <TW341_LIMITDEFN.LIMIT_CODE>030</TW341_LIMITDEFN.LIMIT_CODE> 
     <TW341_LIMITDEFN.LIMIT_TYPE>N</TW341_LIMITDEFN.LIMIT_TYPE> 
     <TW341_LIMITDEFN.PERIOD_VAL>1</TW341_LIMITDEFN.PERIOD_VAL> 
     <TW341_LIMITDEFN.PERIOD_TYPE>C</TW341_LIMITDEFN.PERIOD_TYPE> 
    </Row> 

我试图将这些值抢成在后续步骤中的断言。我想让这些值到达数据图

我在我的断言其中我希望将从JDBC响应拿起值,并将其分配给在脚本中规定的每个数据映射如下Groovy脚本:

def jdbcResponse = context.expand('${JDBC Request for expected results#ResponseAsXml}') 

def xml = new XmlSlurper().parseText(jdbcResponse) 

def expected = xml.'**'.findAll{it.name() == 'Row'}.collect{ [ 
       LimitCode  : it.TW341_LIMITDEFN.LIMIT_CODE.text(), 
       LimitType  : it.TW341_LIMITDEFN.LIMIT_TYPE.text(), 
       LimitPeriod  : it.TW341_LIMITDEFN.PERIOD_VAL.text(), 
       LimitPeriodType : it.TW341_LIMITDEFN.PERIOD_TYPE.text() 
      ] 
      }.sort {it.LimitCode} 

但值形成JDBC响应没有到达。 '预期' 看起来是这样的:

Thu Oct 12 10:51:05 WST 2017:INFO: 
[{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=}, 
{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=}, 
{LimitCode=, LimitType=, LimitPeriod=, LimitPeriodType=},] 

我可以看到, 'XML' 即将通过如下:

周四10月12日10点55分19秒WST 2017年:信息:022N1C023N3R030N1C033N5R043N3R093N1C601S1C

任何想法,为什么我不能将JDBC响应XML中的这些值分配到数据映射值中?

+0

马特,请检查解决方案,看看是否有帮助。 – Rao

回答

2

这是因为元素名称有.。因此,你需要把单引号(')的元素名称,如下图所示:

def expected = xml.'**'.findAll{it.name() == 'Row'}.collect{ [ 
              LimitCode       : it.'TW341_LIMITDEFN.LIMIT_CODE'.text(), 
              LimitType       : it.'TW341_LIMITDEFN.LIMIT_TYPE'.text(), 
              LimitPeriod     : it.'TW341_LIMITDEFN.PERIOD_VAL'.text(), 
              LimitPeriodType : it.'TW341_LIMITDEFN.PERIOD_TYPE'.text() 
             ] 
          }.sort {it.LimitCode} 
+0

再次感谢你饶。小事情错过了,但非常重要! – Matt