2017-05-16 5 views
2

私は角張っていて一般的にテストするのはむしろ新しいです。私は何かをテストしようとする前に、オブジェクトが定義されているかどうかを確認する基本的なテストを設定しようとしています。私がしようとすると、このエラーが表示されない他のテストファイルで、この基本的なテストを行うときしかし工場をテストしようとしていて、注射の問題がある

Error: [$injector:unpr] Unknown provider: $stateParamsProvider <- $stateParams <- Form

私はこのエラーを取得しています。

工場

angular.module('omnibyte_inspect_web.objects') 
.factory('CommonQuestions', ['common_questions_factory', 'Form', '$rootScope', 
    function (common_questions_factory, Form, $rootScope) { 
    // Ctor 
    function CommonQuestions(data) { 
     var keys = Object.keys(data); 
     for (var i = 0; i < keys.length; i++) { 
      this[keys[i]] = data[keys[i]]; 
     } 
    }; 

    CommonQuestions.prototype.Select = function() { 
     this.Id = guid(); 

     Form.CurrentForm().AddCommonQuestion(angular.copy(this)); 
    }; 
    CommonQuestions.prototype.Remove = function() { 
     common_questions_factory.delete(this.Id).then(function() { 
      window.location.reload(); 
     }); 
    }; 

     // Static Methods 
    CommonQuestions.Current = function() { 
     return $rootScope.config_info; 
    }; 
    CommonQuestions.GetAll = function (callback) { 
     common_questions_factory.get().then(function (data) { 
      var collection = []; 

      for (var i = 0; i < data.length; i++) { 
       collection.push(new CommonQuestions(data[i])); 
      } 

      callback(collection); 
     }); 
    }; 

    return CommonQuestions; 
}]); 

テストファイル

describe('CommonQuestions Test', function() { 
    beforeEach(module('omnibyte_inspect_web.objects')); 

    var common_questions_factory, $rootScope, CommonQuestions, Form; 

    beforeEach(inject(function (_common_questions_factory_, _Form_, _$rootScope_, _CommonQuestions_) { 
     common_questions_factory = _common_questions_factory_; 
     Form = _Form_; 
     $rootScope = _$rootScope_; 
     CommonQuestions = _CommonQuestions_; 

     spyOn(CommonQuestions, 'GetAll'); 
     spyOn(common_questions_factory, 'get'); 
     spyOn(CommonQuestions, 'Current');  
    })); 

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

編集

複数のファイルで同じ問題を持つが、それは私のフォームファイルから来ているようです。これは次のとおりです。

フォーム

angular.module('omnibyte_inspect_web.objects') 
.factory('Form', ['forms_factory', 'authentication_service', 'common_questions_factory', 'formdata_factory', 'missinginformation_factory', '$stateParams', 'Question', 'LocationContact', '$rootScope', '$ionicPopup', '$state', 
function (forms_factory, authentication_service, common_questions_factory, formdata_factory, missinginformation_factory, $stateParams, Question, LocationContact, $rootScope, $ionicPopup, $state) { 

第二編集

私のテストファイルにこのモジュールbeforeEach(module('ui.router'));を入れた後、私が取得:

Error: [$injector:unpr] Unknown provider: $ionicPopupProvider <- $ionicPopup <- Form

にこのモジュールbeforeEach(module('$ionic'));を入れた後、私のテストファイル私はエラーが消えてしまう。しかし、私は未定義が定義されると期待される。このテストは他のすべてのファイルで機能しています。

+0

「解決済み」を追加しないでください。問題を解決した回答を受け入れてください、これはあなたのものかもしれません – Liam

+0

ありがとうございます。 – Cody

答えて

0

$stateParamsは、angle-ui/ui-routerのサービスです。 karma.conf.jsファイルにui-routerが含まれていることを確認してください。

+0

これはkarmaファイルに含まれていますが、まだエラーが表示されています。これは正しいファイルですか? 'www/lib/ionic/js/angular-ui/angular-ui-router.js'、 – Cody

+0

少し編集が追加されました。お手伝いありがとう。 – Cody

+0

解決済み。ご協力ありがとうございました! – Cody

0

解決策が見つかりました。それが修正されたそれらの変更を行った後

'www/lib/ionic/js/ionic.bundle.js', 

beforeEach(module('omnibyte_inspect_web.objects')); 
beforeEach(module('ui.router')); 
beforeEach(module('ionic')); 

そして、私のkarma.conf.jsファイルで、これはコメントアウトされました:私は、テストファイルにこれらのモジュールを追加する必要がありました。

+0

良い仕事!ジャスミン注入エラーは、通常、そこのどこかに見つかるでしょう。愚かにthoをデバッグするのは難しい – Bowofola

+0

ありがとう!私は助けに感謝します。 – Cody

関連する問題