Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试Jasmine中的空对象失败_Javascript_Angularjs_Jasmine_Karma Jasmine - Fatal编程技术网

Javascript 测试Jasmine中的空对象失败

Javascript 测试Jasmine中的空对象失败,javascript,angularjs,jasmine,karma-jasmine,Javascript,Angularjs,Jasmine,Karma Jasmine,如果将变量设置为{},则会出现以下匹配错误 // Somewhere in my angular controller self = this; self.myVar = {}; // In my test file // This errors out. I console.log myVar to make sure that it is indeed {} expect(myVar).toEqual({}); // Note if I define myVar = {} in the

如果将变量设置为
{}
,则会出现以下匹配错误

// Somewhere in my angular controller
self = this;
self.myVar = {};


// In my test file
// This errors out. I console.log myVar to make sure that it is indeed {}
expect(myVar).toEqual({});

// Note if I define myVar = {} in the same test spec it works
it('test', function(){
   var myVar = {};
   expect(myCtrl.myVar).toEqual({});
   expect({}).toEqual({});
});
这是什么原因?你会如何通过这种行为?根据Jasmine博士的说法

it("should work for objects", function() {
  var foo = {
    a: 12,
    b: 34
  };
  var bar = {
    a: 12,
    b: 34
  };
  expect(foo).toEqual(bar);

似乎toEqual应该测试对象内容?

我认为您的变量超出了应用程序的范围,在测试用例中,它将作为未定义的变量执行

尝试:
expect(result).toMatchObject({})

您可以尝试使用与要计算的对象中存在的对象键关联的length属性:

expect(Object.keys(res).length).toBe(0); // or not.toBeGreaterThan(0)
如果要评估非空对象,可以使用:

expect((Object.keys(res)).length).toBeGreaterThan(0) // or not.toBe(0)
var empty=jasmine.empty();
expect(empty.asymmetricMatch(myvar));

=>/

请张贴控制器。除非
myVar
是一个全局变量(这是不好的)
expect(myVar).toEqual({})无效