>我已经在使用测试用例,我使用没有 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
问题
这两个模块都在我的主要应用程序中,您看到这里有什么问题吗?
解决方案
我通过与同事一起审查我的代码找到了解决方案,因此同行评审是这里的解决方案!
- 我的模块中缺少
ngRoute
依赖项;
angular.module('warehousesModule', ['smart-table', 'services', 'ngRoute'])
- 添加依赖项后,我忘记重建
*.min.js
。
gulp default