带有$routeParams的单元测试模块失败



>我已经在使用测试用例,我使用没有 glicth 的$routeParams,但我无法让它在这个新的测试用例上运行。

模块

我将其内容减少到最低限度

"use strict";
angular.module('warehousesModule', ['smart-table', 'services', 'ngRoute'])
.controller('WarehouseEditCtrl', [
    '$scope', '$routeParams', '$location', '$window', 'API', 'gettextCatalog', 'form',
    function ($scope, $routeParams, $location, $window, API, gettextCatalog, form) {
}]);

单元测试

"use strict";
describe('testModule', function () {
    beforeEach(module('warehousesModule'));
    describe('WarehouseEditCtrl', function () {
        var $scope, ctrl, $httpBackend;
        beforeEach(inject(function ($rootScope, $routeParams, $controller) {
            $routeParams.compoundId = 3;
            $scope = $rootScope.$new();
            ctrl = $controller('WarehouseEditCtrl', {
                $scope: $scope
            });
        }));
        it('dummy', function () {
        });
    });
});

如果我将模块和控制器更改为另一个(例如产品模块),它会运行而不会出错。

错误信息

Error: [$injector:unpr] Unknown provider: $routeParamsProvider <- $routeParams
http://errors.angularjs.org/1.3.15/$injector/unpr?p0=%24routeParamsProvider%20%3C-%20%24routeParams
    at /home/elopez/projects/tcs_economat/frontend/static/js/vendor.min.js:1
    at r (/home/elopez/projects/tcs_economat/frontend/static/js/vendor.min.js:1)
    at /home/elopez/projects/tcs_economat/frontend/static/js/vendor.min.js:1
    at r (/home/elopez/projects/tcs_economat/frontend/static/js/vendor.min.js:1)
    at i (/home/elopez/projects/tcs_economat/frontend/static/js/vendor.min.js:1)
    at workFn (/home/elopez/projects/tcs_economat/frontend/static_src/bower_components/angular-mocks/angular-mocks.js:2436)
undefined

问题

这两个模块都在我的主要应用程序中,您看到这里有什么问题吗?

解决方案

我通过与同事一起审查我的代码找到了解决方案,因此同行评审是这里的解决方案!

  1. 我的模块中缺少ngRoute依赖项;
angular.module('warehousesModule', ['smart-table', 'services', 'ngRoute'])
  1. 添加依赖项后,我忘记重建*.min.js
gulp default

最新更新