gpt4 book ai didi

javascript - 在 Angular 中使用 es6 测试服务类

转载 作者:行者123 更新时间:2023-11-28 20:52:53 25 4
gpt4 key购买 nike

我有一个用 es6 编写的用于 Angular 应用程序的 服务类。它正在使用 http 请求 api 获取数据。现在我想通过 mocha 和 chai 测试服务。这是服务的样子:

"use strict";
const HTTP = new WeakMap();
class EventService{
constructor($http, moment){
HTTP.set(this, $http);
this.$http = $http;
this.url = 'http://test/api/events?';
this.apiKey = '1234asd';
}

getEvents(){
return this.$http({
url: this.url + 'from=' + this.from + '&to=' + this.to + '&apiKey=' + this.apiKey,
method: "GET",
crossDomain: true,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
});
}
}


EventService.$inject = ['$http', 'moment'];

export default EventService;

业力.conf.js:

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: ['mocha', 'chai'],


// list of files / patterns to load in the browser
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/moment/moment.js',
'node_modules/angular-moment/angular-moment.js',
'lib/shared/services/events-service.js',
'tests/*.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
port: 9876,


// 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: ['Chrome'],


// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,

// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}

现在我只是想启动并运行测试套件,但是,当我运行 karma start 时出现以下错误:

Uncaught SyntaxError: Unexpected token export
at lib/shared/services/events-service.js

在服务的导出命令中。我是否必须进行一些配置更改才能使其正常工作?

最佳答案

我认为您需要将文件预处理为浏览器可读的格式。这可以完成,例如,使用 karma-rollup-preprocessor , rollup-plugin-babel , 和 es2015-rollup巴贝尔预设。所以您的 Karma.conf.js 文件将如下所示:

var babel = require('rollup-plugin-babel');

module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['mocha', 'chai'],
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/moment/moment.js',
'node_modules/angular-moment/angular-moment.js',
'lib/shared/services/events-service.js',
'tests/*.js'
],
preprocessors: {
'lib/shared/services/events-service.js': ['rollup'],
'tests/*.js': ['rollup']
},
rollupPreprocessor: {
plugins: [
babel({
'babelrc': false,
'presets': ['es2015-rollup']
})
],
format: 'iife',
moduleName: '<your_project>',
sourceMap: 'inline'
},
/* other config options */
});
};

这只是一种方法,但您的文件将被捆绑并预处理为浏览器友好的 es5 iife,然后再由 Karma 运行。这应该消除您遇到的 Uncaught SyntaxError。希望这会有所帮助。

关于javascript - 在 Angular 中使用 es6 测试服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com