node.js - Node JS : How can I create a fake tcp socket for testing servers

标签 node.js sockets unit-testing stream mocking

我正在尝试对我的服务器代码(非 http、自定义协议(protocol))进行单元测试。我需要创建一个模拟双工套接字,我可以异步发送消息并从中接收消息。

我在从事件流 readArray 和 writeArray 创建双工流方面取得了一些成功,但 readArray 需要预先准备好数据,并且 writeArray 在流结束之前不会触发。我需要随着时间的推移进行测试。理想的解决方案是将两个双工套接字链接在一起。

是否有任何现有的解决方案?我宁愿不必求助于初始化一个实际的服务器来测试它。

最佳答案

Node Mitm实际上可以做到这一点。它不仅可以拦截和模拟 HTTP,还可以拦截和模拟任何 TCP 连接。

mitm.on("connection", function(socket) { socket.write("Hello back!") })

var socket = Net.connect(22, "example.org")
socket.write("Hello!")
socket.setEncoding("utf8")
socket.read() // => "Hello back!"

关于node.js - Node JS : How can I create a fake tcp socket for testing servers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543322/

相关文章:

node.js - mongodb 不会启动 mongod -> error dbpath does not exists, but the path does exit

php - node.js 如何处理故意大的(和坏的)http 请求

java - 什么是实现套接字的好方法?

python - 如何使用 mock.ANY 和 assert_called_with

java - Spring 单元测试: Autowire the Implementation of an Interface directly?

javascript - 将参数传递给函数导出 Node

html - Webpack:使用组件特定的 css 在 html 中呈现不同?

c - C 存储中的 void 类型变量

linux - nginx uWSGI 连接到 unix 套接字失败

iPhone应用程序单元测试问题