node.js - 使用 node / express / mocha / MongoDB 测试 POST 请求不起作用
问题描述
使用 node / express / mocha / MongoDB 测试 POST 请求不起作用,但对失眠的 post 请求有效。我不确定问题是什么。错误消息只是 Uncaught AssertionError: expected 404 to equal 200。
app.spec.js
process.env.NODE_ENV = "test";
const request = require("supertest");
const chai = require("chai");
const expect = chai.expect;
const app = require("../app");
const Product = require("../models/productsModel");
const User = require("../models/usersModel");
let product;
before((done) => {
//use an instance of your model to write a test
product = Product.create({
name: "skirt",
description: "green flared",
price: "15",
}).then(() => done());
});
describe("/api", () => {
describe("/users", () => {
let product;
describe.only("POST", () => {
it("status: 200, returns the product that has been created", (done) => {
request(app)
.post("/api/users")
.send({ name: "Shirt", description: "Green", price: 20 })
.end((err, res) => {
product = res.body;
console.log(res.body, "<--res");
expect(res.status).to.eq(200);
expect(res.body.name).to.eq("Shirt");
done();
});
});
});
});
});
after((done) => {
Product.deleteMany({}).then(() => done());
});
控制器.js
//inserting a product into the database
exports.createProduct = (req, res, next) => {
const { name, description, price } = req.body; //deconstruct values from the request body
//mongodb generates new body anyway
let newProduct = new Product({
//set variable to new instance of Product model with values
name,
description,
price,
});
newProduct.save(); //save model to database
res.status(200).send({ product: newProduct }); //send back to the user the new product
};
解决方案
这是由于我的 api 路由器在 app.js 文件中设置的超时。
推荐阅读
- r - 如何在 R 中使用 IBrokers 获取 SPX 的最新期权价格
- java - 如何在方法中使用来自其他类的整数?
- c++ - 将单色 FreeType 位图转换为 8 位像素数组
- android - OnSwipeRefreshLayout 不会停止刷新
- uwp - 从哪里可以下载 VSTS Build 生成的构建符号?
- json - 在 JSON 布尔类型中允许传递 int,而不是抛出错误
- bash - 快速搜索以查找活动网址
- sql - 如何从 oracle join 中删除重复值?
- jquery - 将来自 url 的传入查询字符串附加到页面上的特定链接
- python - 如何从保存在 JSON 文件中的权重重建 keras 模型?