我已经google了一下,但未能找到与我的问题相关的任何具体问题。缺乏问题让我相信这是我特定构建的一个问题。
我最近将socket.io添加到一个侧面项目中,只是为了尝试一下websockets。在添加socket.io之前,我的Travis构建没有任何问题;然而,我的Travis构建的后插座将遍历动作并显示通过测试,直到10分钟超时为止。
我正在使用Node和React。我正在运行的测试命令是"test": "react-scripts test --env=jsdom"
测试套件只是组件的基本烟雾测试和一些内容检查。如果需要,我可以分享测试套件,但由于测试都显示为在Travis中传递,我认为没有必要分享。
什么会导致我的Travis构建挂起?据我所知,在我的研究中,除非你直接测试插座,否则它们不应该干扰特拉维斯。我还没有为套接字或使用它们的任何组件添加任何测试。
这是我的 server.js:
const express = require("express");
const bodyParser = require("body-parser");
const path = require("path");
const passport = require('passport')
const PORT = process.env.PORT || 3001;
const changeCat = require("./utils/randomCat");
const routes = require("./routes");
const authCheckMiddleware = require("./server/middleware/auth-check");
const FacebookTokenStrategy = require('passport-facebook-token');
let config;
if(process.env.MONGODB_URI) {
config = process.env
} else {
config = require("./config/index");
}
const app = express();
//...server logic...//
const server = app.listen(PORT, function() {
console.log(` ==> Server now on port ${PORT}!`);
});
let user = {
userCount: 0,
activeUsers: 0
};
const io = require("socket.io").listen(server);
io.on('connection', (socket) => {
user.userCount++;
socket.emit("broadcast", user);
socket.on("disconnect", () => {
user.userCount--;
user.activeUsers--;
socket.emit("broadcast", user);
});
socket.on("deactivateUser", () => {
user.activeUsers--
socket.emit("broadcast", user);
});
socket.on("activateUser", () => {
user.activeUsers = user.userCount
socket.emit("broadcast", user);
});
setInterval(() => socket.emit("broadcast", user),1000);
socket.on("error", err => {
console.log(`Received error from user: ${socket.id}`);
console.log(err);
});
socket.on('connect_failed', err => {
console.log(err)
console.log("connect failed")
});
});
最后,我的 .travis.yml :
language: node_js
node_js:
- "stable"
before_script:
- cd client
- npm install
script:
- npm run test
项目快速简化: 它基本上是一个测验应用程序,每5分钟运行一次测验,每次都有不同的类别。
编辑@ 1:25P编辑标题