Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Karma服务器是一个单例服务器吗?_Javascript_Karma Runner - Fatal编程技术网

Javascript Karma服务器是一个单例服务器吗?

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

我从karma测试跑步者那里得到了非常奇怪的行为,我不知道为什么。据我所知,new Server()选项实际上并不是实例化一个新服务器,而是一个单例实例?我把它放在哪里了?因为让构造函数返回一个单例是没有意义的。。。太困惑了

"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终止了进程。