无法监视angular.element

时间:2015-07-27 17:05:17

标签: javascript angularjs jasmine spy

由于spyOn没有执行,我有一个Jasmine测试不断失败。

以下测试将自动失败:

it('simple test', function() {
    spyOn(angular, 'element');
});

错误是:

TypeError: 'undefined' is not an object (evaluating 'angular.element(handle.elem).off')
        at /Users/geoff/Project/www/components/angular-mocks/angular-mocks.js:1946
        at /Users/geoff/Project/www/components/angular-mocks/angular-mocks.js:1977

此错误似乎只发生在angular.element上。 spy其他angular方法(例如angular.copyangular.forEach var chart = c3.generate({ data: { columns: [ ['data1', 30, 200, 100, 400, 150, 250], ['data2', 130, 100, 140, 200, 150, 50] ], type: 'bar' }, bar: { width: { ratio: 0.5 // this makes bar width 50% of length between ticks } // or //width: 100 // this makes bar width 100px } }); 不会抛出此错误。我正在使用Jasmine 2.0和Angular~1.3。任何有关解决这个问题的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:6)

您需要允许访问真实对象。

spyOn(angular, 'element').and.callThrough();

代码试图访问返回值的属性,但是间谍没有返回任何内容。您无法访问未定义对象的.off