如何模拟 AngularJS 模块配置提供程序

问题描述 投票:0回答:1

在我们的模块中,我们定义了一个自定义方法,它本质上为 $stateProvider 添加了更多功能...

    (function () {
      'use strict';
    
      angular
        .module('someModule', [])
        .config(config);
    
    
    
      config.$inject = ['$stateProvider'];
      function config ($stateProvider) {

  $stateProvider
      .appState({})

问题是无论我在规范文件中尝试什么,我都无法覆盖 appState 方法,只能使用原始方法。

 beforeEach(function () {
    angular.mock.module('someModule', function ($stateProvider) {
        spyOn($stateProvider, 'appState').and.returnValue({
            stateName: 'mockState',
            url: '/mock-url'
        });
    });
});

那么如何从 ui-router 模拟配置提供程序,例如 $stateProvider?

angularjs angular-ui-router
1个回答
0
投票

您可以使用

$provide
并在使用
$provide
提供值之前模拟这些值。

beforeEach(function(){
    const stateProviderMock = {
        appState: () => {}
    };
    spyOn(stateProviderMock, 'appState').and.returnValue({});
    module('someModule');
    module(function ($provide) {
        $provide.value('$stateProvider', stateProviderMock);
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.