错误:注射器已经创建,无法注册模块! Angular 1.2茉莉花1.3.0

时间:2016-03-04 20:05:05

标签: angularjs jasmine

我正在为angular和jasmine 1.3编写一个小应用程序进行测试。

第一次测试工作正常,但我遇到第二次测试。

这里有一段代码,我正在努力挣扎:

[[1]]
[1] "3H 10M 13S"

[[2]]
[1] "4H 40M 20S"

这是我在测试中调用的函数:

> hms(c("13:10.3","20:40.4"))
[1] "13H 10M 3S" "20H 40M 4S"

MIN_LENGTH等于2;

$ scope.item.length是textfield中字符的长度;

你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

从我的理解和遇到完全相似的问题后,我所理解的是,需要被模拟到测试中的“模块”应放在顶部,然后再进行其他“注入”( )“,用于处理特殊依赖关系。

所以,考虑到你的情况,你有一个嵌套套件(describe('ShoppingLIstController helper方法测试')),你试图再次模拟模块

我认为,您可能忘记关闭第一个套件(即'helperFactoryTest'),这显然使您的下一个套件成为嵌套套件。因此,清楚地分析您的套件的开始和结束括号以及终止您的第一套房解决了您遇到的错误。

如果不是这样,如果你进入嵌套套件,那么, 请注意下面代码中的注释,指出问题的原因。

 describe('helperFactoryTest', function() {                 // Parent suite
   var helperFactory = null,
       items = [
            {id : 1, item : 'Apples', qty : 2, type : 2, done : 1 },
                   .
                   .
            {id : 4, item : 'Pears', qty : 8, type : 2,  done : 0 }
    ],
    thisItems = [];
    beforeEach(function() {
        module('myApp');                      //  First Module Mock

        inject(function(_helperFactory_) {    // First inject()
            helperFactory = _helperFactory_;
        });
    });
    it('should filter array and return records that are completed (done)',
        function() {
            //Some test       
        }
    );
    describe('ShoppingLIstController helper methods test', function() {  // Nested Suite
    var $scope,
        helperFactory,
        ShoppingListController;
    beforeEach(function() {

                                  /*   Trying to mock the Module again  */
                                  /*    after parent suite's inject() 
            module('myApp');      /*    This is what is triggering error  */
                                  /* REMOVE THIS MODULE MOCK FROM THIS SUITE */ 

        inject(function($rootScope, _helperFactory_, $controller) {

           $scope = $rootScope.$new();
           helperFactory = _helperFactory_;
           ShoppingListController = $controller('ShoppingListController', {
               $scope : $scope,
               helperFactory : helperFactory
           });
        });
    });
    it('should return 0 for 2 characters', function() {
        //Some Test
    });
  });
}); 

希望这有帮助

干杯。