gpt4 book ai didi

javascript - 异步函数导致 Jasmine 挂起

转载 作者:可可西里 更新时间:2023-11-01 11:38:38 24 4
gpt4 key购买 nike

我正在为我编写的 JavaScript 模块编写一些单元测试。该模块的一部分连接到 REDIS 数据库。我正在使用 node_redis 连接到该数据库.我的测试是用 Jasmine 2.1 编写的,如下所示:

var ModuleService = require('./module-service');
describe("TEST", function() {
var service = new ModuleService();

var options = null;
beforeEach(function() {
options = {
server: '127.0.0.1',
port: 6379
};
});

it('Connect to REDIS', function(done) {
service.connectToRedis(options, function() {
console.log('call back received.');
expect(service.state).toBe('Open');
done();
});
});
});

我的测试执行。服务的状态变量设置为“打开”。但是,在命令行中,它就在那里。我必须执行 Ctrl+C 才能恢复我的命令提示符。如果我删除测试,控制权会立即交给命令提示符。这让我相信我错误地设置了我的异步内容。为了完整起见,我的 connectToRedis 函数如下所示:

var redis = require('redis');
function ModuleService() {
}
ModuleService.prototype.state = 'Not Ready';

ModuleService.prototype.connectToRedis = function(options, callback) {
// Ensure that the options are being passed
if (!options) {
if (callback) {
callback(-1);
}
return;
}

try {
// Attempt to connect to the REDIS server
this.state = 'Connecting to REDIS';
client = redis.createClient(options.port, options.host, null);
this.state = 'Open';

if (callback) {
callback(1);
}
} catch (ex) {
if (callback) {
callback(-1);
}
}
};
module.exports = ModuleService;

我做错了什么吗?为什么控制权没有返回到命令行?

谢谢!

最佳答案

打开的套接字是保持 Node 进程打开的一件事。测试完成后需要断开客户端,让进程自然退出。

关于javascript - 异步函数导致 Jasmine 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385901/

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