我正在使用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'
答案 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);
}