2017-10-12 114 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