如何比较 Jasmine 中的 json 对象
How to compare json object in Jasmine
我想比较 JSON 对象在 Jasmine 中的键。
例如:我有带有两个键的 JSON 对象,我想检查 JSON 是否包含两个 via Jasmine。
{
"key1": "value1",
"key2": "Value2"
}
如果我有这个 JSON 我想检查 JSON 是否同时包含 key1,key2
我们如何在 Jasmine 中检查它?
如果我们可以用 JSON 键检查值类型,那就太好了。
您可以使用 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])
}
扩展了 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]]);
}
});
我想比较 JSON 对象在 Jasmine 中的键。 例如:我有带有两个键的 JSON 对象,我想检查 JSON 是否包含两个 via Jasmine。
{
"key1": "value1",
"key2": "Value2"
}
如果我有这个 JSON 我想检查 JSON 是否同时包含 key1,key2
我们如何在 Jasmine 中检查它? 如果我们可以用 JSON 键检查值类型,那就太好了。
您可以使用 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])
}
扩展了 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]]);
}
});