所以,我有一套角度测试,使用茉莉花和业力。我有一个模块lodash和这样的定义像这样
(function (angular) {
var lodash = angular.module('lodash', []);
lodash.factory('_', ['$window', function ($window) {
//lodash must already be loaded on the page
var _ = $window._;
delete ($window._);
return _ ;
}]);
var moment = angular.module('moment', []);
moment.factory('moment',['$window',function ($window) {
var toReturn = $window.moment;
delete ($window.moment);
return toReturn;
}]);
})(angular);
这一切都可以在我的应用程序没有问题。为什么我会收到这条消息,当我不确定地从方法中返回一个“_”对象?使用
(function (angular) {
'use strict';
var controllerId = 'batchSearchCtrl';
angular.module('app').controller(controllerId, batchSearchCtrl);
batchSearchCtrl.$inject = ['$scope', '$routeParams', 'batchSearchViewModel', 'modalSvc', '_'];
function batchSearchCtrl($scope, $routeParams, batchSearchViewModel, modalSvc, _) {
}
})(angular);
这里的
例子是因果报应文件(不完整的文件只是部分处理的文件加载)
module.exports = function (config) {
config.set({
// base path, that will be used to resolve files and exclude
basePath: '../app',
// frameworks to use
frameworks: ['jasmine'],
// list of files/patterns to load in the browser
files: [
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.js'
, 'http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular-resource.js'
, 'http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular-route.js'
, 'http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular-animate.js'
, '../node_modules/angular-mocks/angular-mocks.js'
, '../components/**/*.js'
, '../scripts/sinon-1.7.3.js'
, '../scripts/base64.js'
, '../scripts/moment-2.4.0.js/moment-with-langs.js'
, '../scripts/watch-1.3.0.js/watch.js'
, '../scripts/jquery/jquery.js'
, '../scripts/bootstrap/bootstrap.js'
, '../scripts/ui-bootstrap/ui-bootstrap-tpls-0.10.0.js'
, '../scripts/lodash/lodash-3.0.0.js'
, '../scripts/watch/watch-1.3.0.js'
, '../scripts/scriptModules.js'
, '../common/module.js'
, 'app.js'
, '../common/*.js'
, '../common/**/*.js'
, '*.js' // all js files in root app folder
, 'app_directives/**/*.js'
, 'batch/*.js'
, 'batch/closing/*.js'
, 'batch/search/*.js'
, 'batch/summary/*.js'
});
};
只是一个预感:有时候在测试的beforeEach()中,你想注入一个服务/工厂和r在您的测试中使用同名的局部变量引用它。你可以这样做:/ var $ compile; beforeEach(inject(function(__ compile_){$ compile = _ $ compile_;}));''''''''''''''''''''我猜你的名为'_'的服务正在从名称中剥离“_”以支持上述注入句法。 – 2015-03-02 16:23:45
你的'karma.conf'看起来像什么?加载'angular-mock'后,你应该加载'lodash'和'moment'。 – 2015-03-02 16:24:17