【发布时间】:2020-06-27 14:20:51
【问题描述】:
我是 Jest 的新手,我想开始为 Node.js 服务器编写一些集成测试。当我尝试运行测试时,我收到 "TypeError: wsModule.Server is not a constructor" 错误。为什么我的测试环境不会初始化套接字服务器?
server.js:
const app = require('express')();
const server = require('http').Server(app);
const io = require('socket.io')(server); <-- TEST FAILS BECAUSE OF SOCKET MODULE
const router = require('./router/router');
const bodyParser = require('body-parser');
const cors = require('cors');
require('./socket/socket')(io);
// Allow CORS so our client can consume JSON
app.use(cors())
// Takes the raw requests and turns them into usable properties on req.body
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Use our router
app.use('/', router);
server.listen(3000, (req, res) => {
console.log("listen at 3000!");
});
module.exports = app;
socket.js:
const userService = require('../services/userService');
const roomService = require('../services/roomService');
module.exports = function (io) {
io.on("connection", socket => {
console.log('there has been a connection with: ' + socket.id);
socket.on('set-username', ({ roomId, username }) => {
userService.setUsername(roomId, username, socket, io);
});
socket.on('start-game', ({ roomId, hostName }) => {
roomService.startGame(roomId, hostName, socket, io);
});
});
roomService.test.js:
const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../../server');
const { expect } = chai;
chai.use(chaiHttp);
describe("example", () => {
test('should run', () => {
expect(true).to.be.true;
})
})
【问题讨论】:
-
你也试过
const server = require('http').createServer(app);吗? -
@Narigo 是的,不幸的是没有运气。
标签: node.js testing socket.io jestjs