javascript - 防止 Jasmine 中的 onComplete 退出

标签 javascript node.js jasmine

我想多次调用 test 函数,但在第一次调用 jasmine.onComplete 后,程序退出。我已经知道,我无法并行进行多个测试,但我想,我也许可以将它们排队,但如果 Jasmine 退出 Node ,我就完成了。因此:

有没有办法阻止 jasmine 退出 Node ?

const toCall = {}
jasmine.onComplete(function(passed) {
    toCall[varReporter.last.name](passed, varReporter.last.result)
    toCall[varReporter.last.name] = null
});

function test(folder, file, callback){
    toCall[file] = callback
    jasmine.execute(['JS/' + folder + '/tests/' + file + '.js'])
}

//  User saves a file, a test get triggered.
test('prototype', 'Array', function(passed, result){
    console.log(util.inspect(result, { colors: true, depth: null }))
})

//  User saves an other file and an other test should get triggered, but can't.

我的测试不会分组调用,而是根据用户与文件的交互来一个接一个地调用。我需要在每次保存后运行测试,以便我可以确定何时应该处理它们。

最佳答案

您可以覆盖 jasmine 退出选项:

jasmine.exit = () => {};

但这会导致各种故障。 我宁愿在另一个进程中运行整个脚本:

run-test.js

const path = require('path'),
    Jasmine = require('jasmine/lib/jasmine.js');

const jasmine = new Jasmine({ projectBaseDir: path.resolve() });
jasmine.execute(process.argv.slice(2));

watch-tests.js

const fork = require('child_process').fork;

function test(folder, file) {
    fork('run-test.js', ['JS/' + folder + '/tests/' + file + '.js']);
}

//  User saves a file, a test get triggered.
test('prototype', 'Array')
//  User saves an other file and an other test should get triggered, but can't.

关于javascript - 防止 Jasmine 中的 onComplete 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562305/

相关文章:

javascript - 如何将 html 作为文本添加到 d3.js 树节点

windows - iisnode:未知的标准输入文件类型

node.js - 创建mongodb对象的思维导图

javascript - 预期 null({ }) 等于 Object({ })

angular - 使用异步 promise 与 jasmine 测试 Angular 2 服务

javascript - 提交时将 div 图像上传到数据库

javascript - 在javascript中获取下一次出现的日期和时间

javascript - 使用按键事件和 jquery 将文本放入输入元素

javascript - Node.js 多个应用程序

jasmine - Jasmine spyOn与特定的论点