gpt4 book ai didi

node.js - server.close() 在 Vow 拆解中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:48 25 4
gpt4 key购买 nike

我正在尝试为我的普通 Express 应用程序编写一些基于 Vows 的测试。

这是测试源:

var vows = require('vows');
var assert = require('assert');
var startApp = require('./lib/start-app.js');

var suite = vows.describe('tournaments');

suite.addBatch({
"When we setup the app": {
topic: function() {
return startApp();
},
teardown: function(topic) {
if (topic && topic.close) {
topic.close();
}
},
"it works": function(topic) {
assert.isObject(topic);
}
}
});

suite.run();

这是 start-app.js:

var app = require('../../app.js');

function start() {
var server = app.listen(56971, 'localhost');
return server;
}

module.exports = start;

app.js 导出使用 express() 创建的常规 Express.js 应用程序。

问题是,每当我运行测试时,topic.close() 在拆卸函数中不起作用,并且测试在成功后永远挂起。我尝试在网络上搜索并添加大量 console.log,但均无济于事。

我使用的是 Node.js 4.2.0 的 Windows x64 版本,并且使用的是 assert@1.3.0vows@0.8.1

知道如何让我的测试停止挂起吗?

最佳答案

以下是我为解决我所贡献的项目中的问题所做的操作:最后一批只是为了关闭服务器。

suite.addBatch({
'terminate server': {
topic: function() {
server.close(this.callback); // this is a regular node require(`http`) server, reused in several batches
},
'should be listening': function() {
/* This test is necessary to ensure the topic execution.
* A topic without tests will be not executed */
assert.isTrue(true);
}
}
}).export(module);

在添加此测试之前,套件永远不会结束执行。您可以通过https://travis-ci.org/fmalk/node-static/builds/90381188查看结果

关于node.js - server.close() 在 Vow 拆解中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092139/

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