我正在尝试使用业力运行测试用例。
'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 is undefined 。我在这里失踪了什么?
栈跟踪
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)
// Karma配置
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
答案 0 :(得分:3)
该服务已添加到模块名称angular.module('myCompany').factory('companyService',
:
MyCompany
但是测试没有加载该模块。它加载名为beforeEach(module('MyCompany'));
的模块:
{{1}}