如何比较Jasmine中的json对象

如何比较Jasmine中的json对象,json,jasmine,bdd,jasmine2.0,Json,Jasmine,Bdd,Jasmine2.0,我想比较Jasmine中JSON对象的键。 例如:我有一个带有两个键的JSON对象,我想检查JSON是否同时包含这两个键 { "key1": "value1", "key2": "Value2" } 如果我有这个JSON,我想检查JSON是否同时包含key1和key2 我们怎么能在茉莉花中查到呢? 如果我们可以用JSON键检查值类型,那就太好了。您可以使用Object.keys(JSONObj)从对象获取所有键。然后,您可以对结果执行一个简单的toEqual或toContain断言 var o

我想比较Jasmine中JSON对象的键。 例如:我有一个带有两个键的JSON对象,我想检查JSON是否同时包含这两个键

{
"key1": "value1",
"key2": "Value2"
}
如果我有这个JSON,我想检查JSON是否同时包含key1和key2

我们怎么能在茉莉花中查到呢?
如果我们可以用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])
}
var obj={
“键1”:“值1”,
“键2”:“值2”
};
var expectedKeys=[“key1”,“key2”];
var keysFromObject=Object.keys(obj);
对于(var i=0;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]]);
    }
  });
it('should test get/set MyParams',()=>{
设paramObj={
关键词1:“abc”,
键2:“def”
};
const objKeys=Object.keys(paramObj);
setMyParams(paramObj);
const gottenObj=myService.getMyParams();
const gottenKeys=Object.keys(gottenObj);
//检查这两个对象是否具有相同数量的项目
expect(objKeys.length)、toEqual(gottenKeys.length);
//检查其中一个中的键控项是否与另一个中的键控项相同
for(var i=0;i
当我编写相同的代码时,它给出了“预期的['key1','key2']包含['key1','key2']”