@@ -476,6 +476,54 @@ var JSONResponse = {
476476 COMPARE_CODE_CHANGE : 11 ,
477477 COMPARE_THROW_CHANGE : 12 ,
478478
479+ getCompareShowObj : function ( cmp , status , response ) {
480+ var it = cmp ;
481+ var p = cmp . path
482+ it . compareType = cmp . code ;
483+ it . compareMessage = ( StringUtil . isEmpty ( p , true ) ? '' : p + ' ' ) + ( cmp . msg || '查看结果' )
484+ switch ( it . code ) {
485+ case JSONResponse . COMPARE_ERROR :
486+ it . compareColor = 'red'
487+ it . hintMessage = ( status != null && status != 200 ? status + ' ' : '' ) + '请求出错!'
488+ break ;
489+ case JSONResponse . COMPARE_NO_STANDARD :
490+ it . compareColor = 'green'
491+ it . hintMessage = '确认正确后点击[对的,纠正]'
492+ break ;
493+ case JSONResponse . COMPARE_KEY_MORE :
494+ case JSONResponse . COMPARE_VALUE_MORE :
495+ case JSONResponse . COMPARE_EQUAL_EXCEPTION :
496+ it . compareColor = 'green'
497+ it . hintMessage = '新增字段/新增值 等'
498+ break ;
499+ case JSONResponse . COMPARE_LENGTH_CHANGE :
500+ case JSONResponse . COMPARE_VALUE_CHANGE :
501+ it . compareColor = 'blue'
502+ it . hintMessage = '值改变 等'
503+ break ;
504+ case JSONResponse . COMPARE_VALUE_EMPTY :
505+ case JSONResponse . COMPARE_KEY_LESS :
506+ it . compareColor = 'orange'
507+ it . hintMessage = '缺少字段/整数变小数 等'
508+ break ;
509+ case JSONResponse . COMPARE_FORMAT_CHANGE :
510+ case JSONResponse . COMPARE_NUMBER_TYPE_CHANGE :
511+ case JSONResponse . COMPARE_TYPE_CHANGE :
512+ case JSONResponse . COMPARE_CODE_CHANGE :
513+ case JSONResponse . COMPARE_THROW_CHANGE :
514+ var code = response == null ? null : response [ JSONResponse . KEY_CODE ]
515+ it . compareColor = 'red'
516+ it . hintMessage = ( code != null && code != JSONResponse . CODE_SUCCESS
517+ ? code + ' ' : ( status != null && status != 200 ? status + ' ' : '' ) ) + '状态码/异常/值类型 改变等'
518+ break ;
519+ default :
520+ it . compareColor = 'white'
521+ it . hintMessage = '结果正确'
522+ break ;
523+ }
524+ return it ;
525+ } ,
526+
479527 /**测试compare: 对比 新的请求与上次请求的结果
480528 0-相同,无颜色;
481529 1-对象新增字段或数组新增值,绿色;
@@ -1635,6 +1683,85 @@ var JSONResponse = {
16351683 return tgt ;
16361684 } ,
16371685
1686+ /**根据 APIJSON 引用赋值路径精准地修改值
1687+ */
1688+ setValByPath : function ( target , pathKeys , val , isTry ) {
1689+ var depth = pathKeys == null ? 0 : pathKeys . length
1690+ if ( depth <= 0 ) {
1691+ return target ;
1692+ }
1693+
1694+ var tgt = target ;
1695+ var parent = target ;
1696+ for ( var i = 0 ; i < depth - 1 ; i ++ ) {
1697+ var k = pathKeys [ i ] ;
1698+ if ( k == null ) {
1699+ return null ;
1700+ }
1701+ k = decodeURI ( k ) ;
1702+
1703+ if ( tgt instanceof Object ) {
1704+ if ( k == '' ) {
1705+ if ( tgt instanceof Array ) {
1706+ k = 0 ;
1707+ } else {
1708+ ks = Object . keys ( tgt ) ;
1709+ k = ks == null ? null : ks [ 0 ] ;
1710+ if ( k == null ) {
1711+ return null ;
1712+ }
1713+ }
1714+ }
1715+ else {
1716+ if ( tgt instanceof Array ) {
1717+ try {
1718+ var n = Number . parseInt ( k ) ;
1719+ if ( Number . isSafeInteger ( n ) ) {
1720+ k = n >= 0 ? n : n + tgt . length ;
1721+ }
1722+ } catch ( e ) {
1723+ }
1724+ }
1725+ }
1726+
1727+ parent = tgt ;
1728+ tgt = tgt [ k ] ;
1729+ continue ;
1730+ }
1731+
1732+ if ( tgt == null ) {
1733+ try {
1734+ var n = Number . parseInt ( k ) ;
1735+ if ( Number . isSafeInteger ( n ) ) {
1736+ k = n >= 0 ? n : n + tgt . length ;
1737+ }
1738+ } catch ( e ) {
1739+ }
1740+
1741+ tgt = Number . isInteger ( k ) ? [ ] : { } ;
1742+ if ( i == 0 && parent == null ) {
1743+ parent = target = tgt ;
1744+ } else {
1745+ parent [ k ] = tgt ;
1746+ }
1747+
1748+ parent = tgt ;
1749+ tgt = tgt [ k ] ;
1750+
1751+ continue ;
1752+ }
1753+
1754+ if ( isTry != true ) {
1755+ throw new Error ( 'setValByPath 语法错误,' + k + ': value 中 value 类型应该是 Object 或 Array !' ) ;
1756+ }
1757+
1758+ return null ;
1759+ }
1760+
1761+ tgt [ pathKeys [ pathKeys . length - 1 ] ] = val ;
1762+
1763+ return target ;
1764+ } ,
16381765
16391766 /**根据路径精准地更新测试标准中的键值对
16401767 */
0 commit comments