[英]Service is not defined while testing for angular service using karma/jasmine
我正在嘗試使用業力運行以下測試案例。
'use strict';
describe('companyService', function () {
var $httpBackend, companyService;
beforeEach(module('MyCompany'));
beforeEach(inject(function (_$httpBackend_, _companyService_) {
$httpBackend = _$httpBackend_;
companyService = _companyService_;
}));
it('should return a promise for getCompany function', function () {
expect(typeof companyService.getCompany('foobar').then).toBe('function');
});
});
以下是Companyservice.js
angular.module('myCompany').factory('companyService',
function($http, MyCompanyApiProvider, $upload) {
'use strict';
var _company = null;
function getCompany(companyId) {
var x = $http.get(MyCompanyApiProvider.url('companies/' + companyId));
return x;
}
return {
getCompany: getCompany
};
}
);
我收到一個錯誤消息,說在調用getcompany方法之前,companyService 未定義 。 我在這里想念什么?
堆棧跟蹤
Firefox 38.0.0 (Windows 8.1) companyService should return a promise for getCompany function FAILED
minErr/<@C:/WebApiRole/bower_components/angular/angular.js:63:12
loadModules/<@C:/WebApiRole/bower_components/angular/angular.js:4138:15
forEach@C:/WebApiRole/bower_components/angular/angular.js:323:11
loadModules@C:/bower_components/angular/angular.js:4099:5
createInjector@C:/bower_components/angular/angular.js:4025:11
workFn@C:/WebApiRole/node_modules/angular-mocks/angular-mocks.js:2409:44
TypeError: companyService is undefined in
C:/WebApiRole/test/company/CompanyServiceSpec.js (line 15)
@C:/WebApiRole/test/company/CompanyServiceSpec.js:15:16
Firefox 38.0.0 (Windows 8.1): Executed 1 of 1 (1 FAILED) ERROR (0.035 secs / 0.015 secs)
//業力配置
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'node_modules/requirejs/require.js',
'bower_components/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'bower_components/ng-file-upload/**/*.js',
'bower_components/angular-ui-router/release/**/*.js',
'bower_components/angular-bootstrap/**/*.js',
'bower_components/angular-translate/**/*.js',
'bower_components/angular-translate-loader-static-files/**/*.js',
'bower_components/angular-pnotify/src/**/*.js',
'bower_components/angular-local-storage/**/*.js',
'bower_components/angular-loading-bar/build/**/*.js',
'app/app.js',
'app/company/CompanyService.js',
'test/**/*Spec.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// web server port
hostname: 'localhost',
port: 44455,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Firefox'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true
});
};
Folder structure :
|WebApiRole/Karma.Conf.js
|WebApiRole/app/app.js
|WebApiRole/app/company/companyservice.js
|WebApiRole/test/company/CompanyServiceSpec.js
該服務已添加到模塊名稱myCompany
:
angular.module('myCompany').factory('companyService',
但是測試不會加載該模塊。 它加載一個名為MyCompany
的模塊:
beforeEach(module('MyCompany'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.