我正在嘗試開發一個 MERN 應用程式。但是 MERN POST 方法單元測驗失敗并出現以下錯誤
錯誤:
1 次失敗
- POST /product/save/ 好的,創建一個新產品有效: AssertionError: 預期 { error: { errors: { …(5) }, …(3) } } 在背景關系中具有屬性“_id”。(test/api/product/post.js:33:29) 在 processTicksAndRejections (node:internal/process/task_queues:96:5
我附上了下面的代碼。
MERNProject/products.js
const mongoose = require("mongoose");
const postSchema = new mongoose.Schema({
productName: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
price: {
type: String,
required: true,
},
productCategory: {
type: String,
required: true,
},
productUrl: {
type: String,
required: true,
},
});
module.exports = mongoose.model("Products", postSchema);
MERNProject/routes/products.js
const express = require("express");
const Products = require("../models/products");
const router = express();
//save Products
router.post("/product/save", (req, res) => {
let newProduct = new Products(req.body);
newProduct.save((err) => {
if (err) {
return res.status(400).json({
error: err,
});
}
return res.status(200).json({
success: "Product saved successfuly",
});
});
});
module.exports = router;
MERNProject/test/api/post.js
const expect = require("chai").expect;
const request = require("supertest");
const app = require("../../../routes/products.js");
const conn = require("../../../server.js");
describe("POST /product/save/", () => {
before((done) => {
conn
.connect()
.then(() => done())
.catch((err) => done(err));
});
after((done) => {
conn
.close()
.then(() => done())
.catch((err) => done(err));
});
it("OK, creating a new product works", async () => {
const res = await request(app).post("/product/save/").send({
productName: "Mango",
description: "description Mango",
price: "rs 50",
productCategory: "fruits",
productUrl:
"https://upload.wikimedia.org/wikipedia/commons/9/90/Hapus_Mango.jpg",
});
const body = res.body;
expect(body).to.contain.property("_id");
expect(body).to.contain.property("productName");
expect(body).to.contain.property("description");
expect(body).to.contain.property("price");
expect(body).to.contain.property("productCategory");
expect(body).to.contain.property("productUrl");
});
});
MERNProject/server.js
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
//import routes
const postRoutes = require("./routes/products");
//app middleware
app.use(bodyParser.json());
app.use(cors());
app.use(postRoutes);
const PORT = 8000;
const DB_URL =
"mongodb srv://twg:[email protected]/myFirstDatabase?retryWrites=true&w=majority";
function connect() {
return new Promise((resolve, reject) => {
mongoose
.connect(DB_URL)
.then((res, err) => {
if (err) return reject(err);
//console.log(`DB connected`);
resolve();
})
.catch((err) => console.log(`DB connection error`, err));
});
}
function close() {
return mongoose.disconnect();
}
connect();
app.listen(PORT, () => {
console.log(`App is running on ${PORT}`);
});
module.exports = { connect, close };
uj5u.com熱心網友回復:
您的 post 請求可能回傳錯誤,并且body包含錯??誤而不是您期望的物件。從痕跡來看,它似乎是這樣的:
{ 錯誤:{ 錯誤:{ …(5) }, …(3) } }
我會說您的測驗作業正常,斷言引發錯誤并且測驗失敗:)
要進一步調查,您應該記錄res
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/447695.html
