2013-10-05 80 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); 
}