gpt4 book ai didi

unit-testing - 如何执行涉及 redis、socket.io 和 nodejs/express 的单元测试?

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

我目前在尝试创建涉及 socket.io、redis 和 express 交互的单元测试时遇到问题。我正在寻找有关如何最好地模拟这些交互的策略。例如,我正在使用 socket.io-client 来模拟 socket.io 到我的快速服务器的连接/行为,但是当我添加一个测试来检查 redis 是否存储来自 socket.io 的正确信息时,我发现自己需要还在 redis 单元测试中模拟 socket.io,这反过来意味着我需要模拟 express 服务器。这导致我似乎正在重写另一个服务器只是为了对我正在尝试测试的实际服务器进行单元测试。

有没有人必须这样做?如果是的话,你能给我指点资源吗(google/stack overflow 的结果很小)?

最佳答案

您要测试应用程序的哪一部分?一种方法是将套接字连接封装在 socket.service.js 文件中。

const socketIO = require('socket.io');

class SocketService {
constructor(server) {
this.socket = socketIO(server);
}

initialize() {
this.socket.on('connection', socket => {
console.log('connected')

socket.on('disconnect', () => {
console.log('disconnected')
});

socket.on('register', registerHandler);

socket.on('update', updateHandler);
});
}
}

您的单元测试可能是它再次注册一个模拟服务器,并调用initialize 方法。

如果您尝试测试所有这些一起工作,那么您就是在谈论集成和端到端测试。

关于unit-testing - 如何执行涉及 redis、socket.io 和 nodejs/express 的单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48933852/

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