我有一个angularjs工厂,我正在注入下划线和应用程序工作正常,但当我尝试编写茉莉花测试用例时,我得到一个错误下划线提供程序未找到 我有我的工厂
angular.module("sample")
.factory("example", example);
example.$inject = ["$document", "$compile", "$rootScope", "$timeout", "$q", "underscore"];
function example($document, $compile, $rootScope, $timeout, $q, _) {
}
我将我的模块定义为
(function(){
angular.module(samlple,[]);
})();
我的测试用例是
beforeEach(module('sample'));
beforeEach(module('ionic'));
beforeEach(inject(function ($document, $compile, $rootScope, $timeout,underscore,example) {
}
给出错误 错误:[$ injector:unpr]未知提供者:underscoreProvider< - underscore
答案 0 :(得分:1)
在index.html中添加导入下划线,然后将其添加为服务。
var underscore = angular.module('underscore', []);
underscore.factory('_', function() {
return window._; // assumes underscore has already been loaded on the page
});
和
//Now we can inject underscoreJS in the controllers
function MainCtrl($scope, _) {
//using underscoreJS method
_.max([1,2,3,4]); //It will return 4, which is the maximum value in the array
}
但我建议你使用lodash!它有更酷的功能。有关如何在Angular中使用lodash的信息,您可以找到here。
答案 1 :(得分:0)
抄袭@ Bakhtier的回答,我使用以下内容让Karma / Jasmine识别lodash,以便我可以在我的服务中使用它,以及我应用程序的其余部分。
angular.module('app', ['app.services', 'lodash']);
angular.module('app.services', ['lodash']).factory('MyService', ['_', function (_){
// your code bits
}]);
angular.module('lodash', []).factory('_', function() {
return window._;
});
希望能帮助别人。