@@ -476,6 +476,54 @@ var JSONResponse = {
476
476
COMPARE_CODE_CHANGE : 11 ,
477
477
COMPARE_THROW_CHANGE : 12 ,
478
478
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
+
479
527
/**测试compare: 对比 新的请求与上次请求的结果
480
528
0-相同,无颜色;
481
529
1-对象新增字段或数组新增值,绿色;
@@ -1635,6 +1683,85 @@ var JSONResponse = {
1635
1683
return tgt ;
1636
1684
} ,
1637
1685
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
+ } ,
1638
1765
1639
1766
/**根据路径精准地更新测试标准中的键值对
1640
1767
*/
0 commit comments