3

我正在使用 Karma、Mocha、Chai 和 CoffeeScript 堆栈进行单元测试,并希望测试一个变量是一个角度范围。

像这样的东西会很好但不起作用:

 scope = $rootScope.$new()
 expect(scope).to.be.an.instanceOf $rootScope

我已经尝试了所有我能想到的变体,包括$rootScope::$rootScope.$new()作为instanceOf.

有没有办法做到这一点?


目前我正在这样做:

expect(scope.$id).to.exist 

这不太理想。


回答:

这是咖啡/摩卡/柴的“空”答案

 expect(scope.constructor.name).to.equal 'Scope'
4

2 回答 2

2

不太确定您要完成什么,但这在茉莉花测试中是正确的:

var $scope = $rootScope.$new();
expect($scope.constructor.name).toBe('Scope');
于 2013-10-06T22:16:36.837 回答
2

如果您有权访问,$rootScope则可以执行以下操作:

var $scope = $rootScope.$new();
expect($scope.constructor).toEqual($rootScope.constructor);

这也适用于 angular 的缩小版本。

如果某物不是Scope对象,那么您可以将其转换为这样的对象:

// In this case `context` might be a scope object or just a POJO.
if (context.constructor !== $rootScope.constructor) {
    context = angular.extend($rootScope.$new(), context);
}
于 2015-08-28T20:08:10.057 回答