3

在我迁移到最新的候选版本之前,我对一个运行良好的指令进行了一些单元测试。即使在 RC 下,测试也顺利通过,但如果主模块包含“ngAnimate”,即使应用程序没有定义或使用动画,也会失败。不知何故,例行同步测试变得时髦。

该应用程序在生产中运行时运行良好。

以下Plunkr说明了这个问题:

该指令

app.directive('directive', function(){
  return {
    template: '<dir ng-class="blues()">'+
                'This text is {{blues()}}, but the test failed.'+
               '</dir>',
    restrict: 'E',
    replace: true,
    link: function(scope, element, attrs){
      scope.blues = function(){return 'blue';};
    }
  };
});

考试

...
beforeEach(inject(function($rootScope, $compile) {
  scope = $rootScope.$new();
  element = $compile('<directive></directive>')(scope);
  $rootScope.$digest();
}));
...
it('should have the text be blue', function() {
  expect(element.hasClass('blue')).toBeTruthy();
});
...

(只需删除 Plunker 主模块的 app.js 定义中的 ngAnimate 即可查看测试通过)。

这个问题似乎与最近对 ng-class 和动画的更改有关。没有多少研究似乎奏效。这是怎么回事?

顺便说一句:我注意到 angular.mock.animate 装饰器似乎不是仅仅通过在我的普通课程中添加 angular-mock.js 来安装的。($animate 没有对 flushNext 进行编码。)我是否需要做一些特别的事情,或者以任何特定的顺序加载以使配置正常工作?

4

0 回答 0