Jasmine/Angular:未知提供程序:$localStorageProvider<-localStorage

Jasmine/Angular: Unknown provider: $localStorageProvider <-localStorage

本文关键字:localStorageProvider lt-localStorage 程序 Angular 未知 Jasmine      更新时间:2023-09-26
Error: [$injector:unpr] Unknown provider: $localStorageProvider <- $localStorage

当我用Karma进行茉莉花测试时,我遇到了一个错误。我不确定如何处理它,我试着在茉莉花文件中的注入中放置本地存储,但没有成功。我所要做的就是确保我的控制器被我的Jasmine文件识别,以便启动。

Javascript文件:

define(['app'], function (app) {
    'use strict';
    app.controller('SplashController',
        function ($scope, $state, $localStorage, $window, $modal, pageService, authenticationService, focusService, config) {
            var state;
            focusService.focusMain();
            $scope.beginLogon = function () {
                authenticationService.authenticate();
            };
            $scope.checkMedia = function (state) {
                $state.transitionTo(state);
            };
            $scope.today = new Date();
            $scope.appTitle = config.app.title;
            var loc = $window.location.pathname;
            var url = $window.location.origin;

var modalInfo = {value: null, dismissed: true, resendHash: []};
  var modalInstance;
  var controller;
  var openModal = function (template, controller, modalInfo) {
    modalInstance = $modal.open({
      windowTemplateUrl: 'src/ui-components/modals/helper/modal-window_template.html',
      templateUrl: template,
      controller: controller,
      backdrop: 'static',
      keyboard: false,
      resolve: {
        modalInfo: function () {
          return modalInfo;
        }
      }
    });
  };

  $scope.previewCloseClick = function () {
    $modalInstance.close();
    modalInfo.dismissed = true;
  };
  var ModalInstanceCtrl = function ($scope, focusService) {
    modalInfo.dismissed = false;
    focusService.focusTopModal();
    $scope.okCancel = function () {
      modalInstance.close();
      modalInfo.dismissed = true;
    };
  };

        });
});

规范文件:

define(['SplashController'], function () {
    'use strict';
    describe("The Splash Controller", function () {
        var controller,
            scope,
            localStorage;
        beforeEach(function () {
            module('angularTemplateApp');
            focusServiceMock = jasmine.createSpyObj('focusService', ['focusMain']);

            module(function ($provide) {
                $provide.value('focusService', focusServiceMock);
                $provide.value('authenticationService', authServiceMock);
            });
            inject(function ($controller, $rootScope, $localStorage) {
                localStorageMock = jasmine.createSpyObj('$localStorage', ['openModal']);
                scope = $rootScope.$new();
                localStorage = $localStorage;
                controller = $controller('SplashController', {
                    $scope: scope, 
                    $localStorage: localStorage
                });
            });
        });
        it("when the login button is clicked", function () {
        expect(controller).toBeDefined();
        });
    });
});

更新1:有趣的是,如果我注释掉我的it块,测试运行时不会出错。

您必须在module('angularTemplateApp'); 之前注入ng存储

beforeEach(module('ngStorage'));一样,前提是您已将本地存储文件添加到配置文件中,即ngStorage.min.js

相关文章:
  • 没有找到相关文章