测试角度范围的实例

时间:2013-10-05 16:15:17

标签: angularjs coffeescript mocha karma-runner chai

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

这样的事情会很好但不起作用:

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

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

有办法做到这一点吗?


目前我正在接受这个:

expect(scope.$id).to.exist 

这不太理想。


答案:

这是咖啡/ mocha / chai中的“null”答案

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

2 个答案:

答案 0 :(得分:2)

不太确定您要完成的是什么,但 jasmine 测试中的 true

var $scope = $rootScope.$new();
expect($scope.constructor.name).toBe('Scope');

答案 1 :(得分:2)

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

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

这也适用于角度的缩小版本。

如果某些内容不是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);
}