编译内部测试不会创建所需的结果

时间:2014-07-15 15:42:35

标签: angularjs unit-testing angularjs-directive

我正在使用业力进行单位测试我的角度指令。我从我的指令中删除了部分,直到我将它全部删除,但我显然遗漏了一些东西。 这是测试:

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

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

编辑: 这是beforeEach:

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

1 个答案:

答案 0 :(得分:0)

在beforeEach中执行此操作:

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

现在每个&#39;它&#39;您应该能够看到编译的元素。

这里的关键是:

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

  2. 将其包裹在scope.$apply中(如果没有包装,它可能会有效 之后只是调用它,但这是更合适的方式。)