2014-07-15 22 views
0

我正在使用karma进行单元测试我的角度指令。我从我的指令中删除了部分内容,直到我将其全部删除,但我明显错过了某些内容。 这是测试:编译内部测试不会创建所需的结果

element = angular.element('<div ng-repeat="option in options">ASD</div>'); 
element = $compile(element)(scope); 
expect(element.text()).toMatch('ASD'); 

为什么编译时不运行ng-repeat?

编辑: 这是beforeEach:现在你应该可以看到你的元素编译每个 '它' 部分

scope.$apply(function() { 
    . . . set up your scope here 
    element = $compile('<div ng-repeat="option in options">ASD</div>')(scope); 
} 

var element; 
var scope; 
    beforeEach(inject(function ($rootScope) { 
     scope = $rootScope.$new(); 
     scope.options = [{}]; 
    })); 
+0

您是否在范围上定义了一个名为options的数组,因此它可以重复使用它? –

+0

是的。我正在注入$ rootScope - > scope = $ rootScope。$ new() - > scope.options = [{}]; – alonn24

+0

在你的beforeEach结尾添加'scope。$ digest();' – glepretre

回答

0

在beforeEach执行此操作。这里

的关键是:

  1. 不要编译angular.element(<html>),但编译<html>直接

  2. 敷在scope.$apply(能不缠绕可能工作, 只是调用它之后,但这是更合适的方式)。