2017-03-23 1 views
2

재스민에서 JSON 객체의 키를 비교하고 싶습니다. 예 : 두 개의 키가있는 JSON 객체가 있습니다. JSON에 Jasmine을 통해 두 개가 모두 포함되어 있는지 확인하고 싶습니다. 내가 JSON은 모두 키 1을 포함하는 경우 확인하려면이 JSON, 키 2가있는 경우jasmine에서 json 객체를 비교하는 방법

{ 
"key1": "value1", 
"key2": "Value2" 
} 

우리는 어떻게 확인할 수 있습니다

재스민에 그? 값 유형을 JSON 키로 확인할 수 있다면 좋을 것입니다.

답변

1

Object.keys(JSONObj)을 사용하면 개체에서 모든 키를 가져올 수 있습니다. 결과에 간단한 toEqual 또는 toContain 어설 션을 사용할 수 있습니다.

var obj = { 
    "key1": "value1", 
    "key2": "Value2" 
    }; 
var expectedKeys = ["key1","key2"]; 
var keysFromObject = Object.keys(obj); 
for(var i=0; i< expectedKeys.length;i++) { 
    expect(keysFromObject).toContain(expectedKeys[i]) 
} 
+0

'예상'[ 'key1', 'key2']에 [ 'key1', 'key2']가 포함되어 있습니다. ' 내가 같은 코드를 쓸 때 – hardiksa

+0

내 대답이 업데이트되었습니다. –

0

Sudharasan의 답변에 약간의 확장을 시도해 보았습니다. 객체의 getter/setter를 테스트하기 위해 이것을 작성했습니다. 그것은 초기 설정 객체로부터 키를 가져 와서 그것을 사용하여 그 키들과 그 키들 (그리고 올바른 값들)만이 주어진 객체에 있음을 확인합니다.

it('should test get/set MyParams',() => { 
    let paramObj = { 
     key1: "abc", 
     key2: "def" 
    }; 
    const objKeys = Object.keys(paramObj); 

    myService.setMyParams(paramObj); 
    const gottenObj = myService.getMyParams(); 
    const gottenKeys = Object.keys(gottenObj); 

    // check that the 2 objects have the same number of items 
    expect(objKeys.length).toEqual(gottenKeys.length); 

    // check that a keyed item in one is the same as that keyed item in the other 
    for (var i = 0; i < objKeys.length; i++) { 
     expect(paramObj[objKeys[i]]).toEqual(gottenObj[objKeys[i]]); 
    } 
    }); 
관련 문제