【发布时间】:2021-11-24 13:49:59
【问题描述】:
我对测试很陌生,所以这个问题可能很简单......但我仍然需要一些帮助:
我有一个 node.js 服务器:
const net = require("net");
const Canvas = require("./canvas");
server.on("connection", (socket) => {
const canvas = (new Canvas(socket));
...
});
server.listen(8124);
在 canvas.js 文件中:
class Canvas {
constructor(socket) {
this.socket = socket;
}
disconnect() {
this.socket.end();
this.socket.destroy();
}
}
我正在尝试测试断开功能,并尝试模拟套接字对象的方法:
const Canvas = ...
const expect = require("expect");
const sinon = require("sinon");
describe('Canvas', () => {
const fakeSocket = {
end: () => {},
destroy: () => {},
write: () => {},
};
let canvasObj;
const mock = sinon.mock(fakeSocket);
beforeEach(() => {
canvasObj = new Canvas(mock);
});
describe("disconnect", () => {
it("calls the appropriate functions", () => {
mock.expects("end").once();
mock.expects("destroy").once();
canvasObj.disconnect();
mock.verify();
expect(fakeSocket.end).toHaveBeenCalled();
expect(fakeSocket.destroy).toHaveBeenCalled();
});
});
});
不幸的是,当我运行测试时,它显示 TypeError: this.socket.end is not a function。我有什么遗漏吗?
【问题讨论】:
标签: node.js sockets mocha.js sinon