Node.js 我正在尝试使用jest测试我的节点API,但它不起作用。我无法解决这可能是什么原因以及如何解决这一问题?
这是我的主app.js文件,我在其中定义了路径Node.js 我正在尝试使用jest测试我的节点API,但它不起作用。我无法解决这可能是什么原因以及如何解决这一问题?,node.js,jestjs,Node.js,Jestjs,这是我的主app.js文件,我在其中定义了路径 const express = require("express"); const bodyParser = require("body-parser"); const mongoose = require("mongoose"); const cookieParser = require("cookie-parser"); const categoriesRouter
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const cookieParser = require("cookie-parser");
const categoriesRouter = require("./routes/categoriesRouter");
const productRouter = require("./routes/productRouter");
const userRouter = require("./routes/userRouter");
const orderRouter = require("./routes/ordersRouter");
const app = express();
const cors = require("cors");
app.use(bodyParser.json());
app.use(cors());
app.use(cookieParser());
mongoose
.connect("mongodb://localhost:27017/MERO-HARDWARE-PASAL", {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
})
.then(() => console.log("DB connected"));
app.use("/api", categoriesRouter);
app.use("/api", productRouter);
app.use("/api", userRouter);
app.use("/api", orderRouter);
app.use("/uploads", express.static("uploads"));
app.get("*", function (req, res) {
res.status(500).send("Oops Something Went Wrong!!!");
});
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
这是我的userRouter.js文件,用于处理与用户相关的请求
router.post("/signup", signup);
router.post("/signin", signin);
router.get("/signout", signout);
这是我的user.test.js文件,用于定义测试用例
const request = require("supertest");
const express = require("express");
const userRouter = require("../routes/userRouter");
const app = express();
app.use(express.json);
app.use("/api", userRouter);
require("./config");
describe("Testing of user route", () => {
test("should be able to register", () => {
return request(app)
.post("/signup")
.send({
name: "testing",
email: "testing@gmail.com",
password: "testing@gmail.com",
})
.then((res) => {
console.log(res.body);
});
});
});
这就是我得到的错误。我无法解决这个问题。
这是错误消息
在jest.setTimeout.Error指定的5000毫秒超时内调用:
9 |
10 | describe("Testing of user route", () => {
> 11 | test("should be able to register", () => {
| ^
12 | return request(app)
13 | .post("/api/signup")
14 | .send({
at new Spec (C:/Users/Lenovo/AppData/Roaming/npm/node_modules/jest/node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
at Suite.<anonymous> (test/user.test.js:11:3)
at Object.<anonymous> (test/user.test.js:10:1)
console.log
Disconnecting ...
at test/config.js:20:13
A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper
9|
10 |描述(“用户路由测试”,()=>{
>11 |测试(“应该能够注册”,()=>{
| ^
12 |退货申请(app)
13 | post(“/api/signup”)
14 |发送({
在新规范中(C:/Users/Lenovo/AppData/Roaming/npm/node_modules/jest/node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
在套件中。(test/user.test.js:11:3)
at对象。(test/user.test.js:10:1)
console.log
断开。。。
在test/config.js:20:13
工作进程未能正常退出,已被强制退出。这可能是由于不正确的操作导致测试泄漏所致
撕裂。尝试使用--runInBand--detectOpenHandles运行以查找
泄露
请以文本形式提供错误,它不需要是图像。问题特定于Mongoose。对未打开的db连接的请求会导致挂起的承诺和超时。由于您未包含应用程序文件,因此未建立连接。@EstusFlask我已以文本形式添加错误消息,并已添加db连接,但尚未添加在这里包括该文件。然后,请提供可以重现错误的文件。不清楚是否存在db连接,也不知道测试路由中发生了什么,以及是否有其他超时原因。根据我的经验,Mongoose超时几乎总是意味着没有连接。
9 |
10 | describe("Testing of user route", () => {
> 11 | test("should be able to register", () => {
| ^
12 | return request(app)
13 | .post("/api/signup")
14 | .send({
at new Spec (C:/Users/Lenovo/AppData/Roaming/npm/node_modules/jest/node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
at Suite.<anonymous> (test/user.test.js:11:3)
at Object.<anonymous> (test/user.test.js:10:1)
console.log
Disconnecting ...
at test/config.js:20:13
A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper