AngularJS - 在单元测试中模拟$窗口

时间:2015-04-09 08:27:40

标签: angularjs unit-testing jasmine karma-jasmine

我试图用这个来模拟$window对象:

var mock$window = {
    scrollTop : 150,
    height : 600
};
$provide.value('$window', mock$window);

当我运行测试时,我可以获得$window.scrollTop()值,但当我尝试使用$window.height()时,我会收到Cannot use 'in' operator to search for 'height' in undefined的错误。

模仿$windows对象的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这取决于$ window的使用方式以及您要测试的内容。在控制器中,您可以将其作为依赖项,您可以执行类似

的操作
var $scope;
var mockWindow = {...};
beforeEach(inject(function(_$rootScope_, _$controller_) {
    $scope = _$rootScope_.$new();
    _$controller_('MainCtrl', {$window: mockWindow});
}));

您使用键和整数值将mock $ window定义为Object,但称为函数。