2013-10-05 82 views
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' 
+0

什么是你想断言? '范围'与'rootScope'是同一类型? –

+0

只是“范围”是一个角度范围。或者说,“范围”可以被认为具有一种角度范围。 – Fresheyeball

回答

2

不太清楚你想要什么来完成,但是这将是真正的茉莉花测试:

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

这仅适用于在Angular上使用非.min版本(如.min似乎回到“h”)的情况 – Campbeln

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); 
}