2017-02-22 23 views
0

У меня есть следующие сложные настройки angularjs:Карма-жасмин Ошибка

angular.module('a',['b','c']) 
    .controller('c1', ['$scope', 'bservice', 'cservice', function($scope,bservice,cservice){ 

     // c1 controller code 
    }]); 

angular.module('b',['d','e']) 
    .service('bservice', ['$scope', 'dservice', 'eservice', function($scope,dservice,eservice){ 

     // bservice code 
    }]); 

angular.module('c',['f','g']) 
    .service('cservice', ['$scope', 'fservice', 'gservice', function($scope,fservice,gservice){ 

     // cservice code 
    }]); 

angular.module('d',[]) 
    .service('dservice', ['$scope', function($scope){ 

     // dservice code 
    }]); 

angular.module('e',[]) 
    .service('eservice', ['$scope', function($scope){ 

     // eservice code 
    }]); 

angular.module('f',[]) 
    .service('fservice', ['$scope', function($scope){ 

     // fservice code 
    }]); 

angular.module('g',[]) 
    .service('gservice', ['$scope', function($scope){ 

     // gservice code 
    }]); 

Теперь я пишу тест жасмин случай для c1 контроллера Вот мой пример кода контроллера

describe('c1 controller', function(){ 
     var scope, controller; 
     var bservice, cservice; 

     beforeEach(module('a')); 

     beforeEach(inject(function(_$controller_, _$rootScope_, _bservice_, _cservice_) { 
      scope = _$rootScope_.$new(); 

      controller = _$controller_('c1', { 
       $scope: scope, 
       bservice: _bservice_, 
       cservice: _cservice_ 
      }); 

     })); 

     it('scope should be defined', function() { 
      expect(scope).toBeDefined(); 
     }); 

    }); 

Но для некоторых причина, по которой тест терпит неудачу, и я не получаю сообщение об ошибке. Единственное сообщение, Firefox пусковая показывает провален со следующими файлами:

minErr/<@ui-build/node_modules/angular/angular.js:68:12 
loadModules/<@ui-build/node_modules/angular/angular.js:4779:15 
[email protected]/node_modules/angular/angular.js:357:11 
[email protected]/node_modules/angular/angular.js:4740:5 
[email protected]/node_modules/angular/angular.js:4662:19 
[email protected]/node_modules/angular-mocks/angular-mocks.js:3160:44 
[3]</ContextKarma/[email protected]://localhost:9876/context.js:151:7 

Так что мои вопросы:

Может ли этот вид angularjs установки рекомендуется для тестирования и, если да, то, что я делаю неправильно или отсутствует, что приводит к сбою теста?

Как включить подробный журнал ошибок в карме?

+0

PhantomJS известен своими ошибками при глотании, особенно перед каждым блоком. Переключитесь на Chrome. Нет абсолютно никаких оснований делать такие вещи, как 'bservice: _bservice_'. Он уже введен по умолчанию. – estus

+0

Ive использовал хром и firefox-пусковые установки, но по-прежнему ту же ошибку – VishwaKumar

+0

Попробуйте переместить 'inject' from beforeEach к нему и посмотреть, что произойдет. Я не вижу ничего плохого в коде, который вы опубликовали, - кроме неправильной аннотации, которая почти не сохраняется в исходном коде. Но это также означает, что реальный код может отличаться от того, который вы опубликовали. – estus

ответ

1

Самое первое, что вы сделали неправильно: имя зависимостей, поскольку оно должно было быть строками вместо переменных.

Таким образом, вместо того, чтобы:

angular.module('a',['b','c']).controller('c1', [$scope, bservice, cservice, function($scope,bservice,cservice){ 
     // c1 controller code 
    }]); 

Оно должно быть:

angular.module('a',['b','c']).controller('c1', ['$scope', 'bservice', 'cservice', function($scope,bservice,cservice){ 
     // c1 controller code 
    }]); 

Следующая вещь, которую вы должны сделать, это проверить каждую услугу и контроллер отдельно насмешливый искомым во время индивидуального обслуживания и контролеров.

Для примера приведен пример CodePen. Если вы будете издеваться над модулем и сервисом, он будет работать.

+0

Пожалуйста, игнорируйте опечатки, которые, возможно, были в моем коде. – VishwaKumar

+0

@ VishwaKumar Вместо того, чтобы сбрасывать фиксированные опечатки. – Gaurav

+0

Просмотрите демо-версию CodePen, я добавил. По мне, если вы сделаете то, что я упомянул выше, это сработает, по крайней мере, это работает в моем примере. – Gaurav