Javascript Karma服务器是一个单例服务器吗?
我从karma测试跑步者那里得到了非常奇怪的行为,我不知道为什么。据我所知,new Server()选项实际上并不是实例化一个新服务器,而是一个单例实例?我把它放在哪里了?因为让构造函数返回一个单例是没有意义的。。。太困惑了Javascript Karma服务器是一个单例服务器吗?,javascript,karma-runner,Javascript,Karma Runner,我从karma测试跑步者那里得到了非常奇怪的行为,我不知道为什么。据我所知,new Server()选项实际上并不是实例化一个新服务器,而是一个单例实例?我把它放在哪里了?因为让构造函数返回一个单例是没有意义的。。。太困惑了 "use strict"; var Server = require('karma').Server; var runner = require('karma').runner; var filePath = process.cwd(); filePath += "/k
"use strict";
var Server = require('karma').Server;
var runner = require('karma').runner;
var filePath = process.cwd();
filePath += "/karma.conf.js";
//files needs to be an array of string file matchers
function runTests(files, port) {
var config = {
configFile: filePath,
files: files,
port: port
};
var server = new Server(config, function(exitCode) {
console.log('Karma has server exited with ' + exitCode);
process.exit(exitCode)
});
server.on('run_complete', function (browser, result) {
console.log('A browser run was completed');
console.log(result);
});
server.on('browsers_ready', function () {
runner.run({port: port}, function(exitCode) {
console.log('Karma runner.run has exited with ' + exitCode);
process.exit(exitCode)
});
});
server.start();
}
runTests(['test/**/*Spec.js', 'tmp/example.js'], 9876);
runTests(['test/**/*Spec.js', 'tmp/example2.js'], 9877);
runTests(['test/**/*Spec.js', 'tmp/example3.js'], 9878);
我得到的结果是:
A browser run was completed
{ success: 1,
failed: 0,
error: false,
disconnected: false,
exitCode: 0 }
A browser run was completed
{ success: 0,
failed: 1,
error: true,
disconnected: false,
exitCode: 1 }
A browser run was completed
{ success: 0,
failed: 1,
error: true,
disconnected: false,
exitCode: 1 }
Karma runner.run has exited with 0
正如您所看到的,服务器从不退出(为什么,我不知道),而运行程序只退出一次,为什么?我还是不能说。。。预期的行为是,将创建三个karma服务器实例,它们将启动.on(浏览器准备就绪,无特定顺序)。这将导致运行程序通知该端口的服务器运行(3次单独运行)。然后,当运行完成时,它将退出运行程序(3次而不是一次)将结果打印到终端,并在某个时候退出服务器(3次不是0).有没有可能,上的
.on方法被触发了3次,然后所有3台服务器都在没有触发运行程序的退出方法的情况下被终止了?当然有可能,Jamie,但是我不知道为什么退出回调没有被触发,或者为什么运行程序回调恰好在Karma终止pr时被调用进程。因此,我使用日志级调试运行它,没有调试日志表明karma终止了它。是否有可能,
上的.on方法被触发了3次,然后所有3台服务器都在没有触发运行程序的exit方法的情况下被终止?当然有可能是Jamie,但我不知道为什么exit回调没有被触发激发,或者为什么在Karma终止进程时调用运行程序回调。所以我使用日志级别的调试运行它,没有调试日志表明Karma终止了进程。