javascript中web套接字的单元测试
unit test for web socket in javascript
我需要使用sinon编写单元测试到web套接字客户端。代码如下:
Socket = {
connect: function ()
{
socket = new WebSocket('ws://localhost:12345');
socket.onopen = function()
{
console.log('connected to the server');
};
socket.onmessage = function(message)
{
console.log('Received:', message.data);
};
}
};
我们最后需要在connect
方法中返回套接字实例。因为您为onopen
和onmessage
事件分配了两个新函数。它将覆盖套接字对象上的spy
或stub
方法。
测试环境:Node
以下是单元测试解决方案:
index.js
:
const Socket = {
connect: function() {
socket = new WebSocket("ws://localhost:12345");
socket.onopen = function() {
console.log("connected to the server");
};
socket.onmessage = function(message) {
console.log("Received:", message.data);
};
return socket;
}
};
module.exports = Socket;
index.spec.js
:
const sinon = require("sinon");
const { expect } = require("chai");
const Socket = require("./index");
class WebSocket {
constructor(uri) {}
onopen() {}
onmessage() {}
}
global.WebSocket = WebSocket;
describe("17806481", () => {
it("should test connect correctly", () => {
const logSpy = sinon.spy(console, "log");
const socket = Socket.connect();
const onopenSpy = sinon.spy(socket, "onopen");
const onmessageSpy = sinon.spy(socket, "onmessage");
onopenSpy();
expect(logSpy.firstCall.calledWith("connected to the server")).to.be.true;
const mMessage = { data: "fake data" };
onmessageSpy(mMessage);
expect(logSpy.secondCall.calledWith("Received:", mMessage.data)).to.be.true;
});
});
Socket
模块100%覆盖的单元测试结果:
17806481
connected to the server
Received: fake data
✓ should test connect correctly
1 passing (10ms)
---------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 75 | 100 | |
index.js | 100 | 100 | 100 | 100 | |
index.spec.js | 100 | 100 | 60 | 100 | |
---------------|----------|----------|----------|----------|-------------------|
源代码:https://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/17806481
相关文章:
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 快速的套接字 io 实例/中间件
- PHP:Web套接字和html 5
- 无法从客户端发出套接字消息
- STOMP web套接字回调不'不起作用
- Will my'新对象'在套接字断开连接时被垃圾收集
- Mocha网络套接字测试https服务器
- 嘲笑网.用于单元测试的套接字
- 如何对 Web 套接字进行单元测试 - JavaScript
- 节点快速 3x 套接字 IO 测试
- 使用 Web 套接字运行 JavaScript 验收测试
- 使用 Jasmine 测试 Web 套接字
- javascript中web套接字的单元测试
- 套接字.io-client简单客户端/服务器测试不能连接- Node.js
- 测试套接字是否仍然打开