[英]Test express router with mocha
我遇到了一个关于 express (node.js) 中路由的奇怪行为。
我试图测试一个api。
服务器安装:
app.use("/", productRouter);
app.use("/", testRouter);
productRouter.post("/products", ...);
testRouter.post("/test", ...);
如果我POST
到:
http://localhost:MYPORT/test
http://localhost:MYPORT/products
一切正常。
但是如果我运行这个 mocha 测试:
const app = require("../src/index");
describe(" ====== Test for argumentMiddleware: a factory to check request arguments ======", () => {
describe("requiredArgument middleware", () => {
it("it should return error if requiredArgument is not in the body of request:", done => {
let requestBody = {
argument: "product"
};
chai
.request(app)
.post("/test")
.send(requestBody)
.end((err: Error, res: any) => {
res.should.have.status(400);
console.log(err.message);
done();
});
});
it.skip("it should pass if requiredArgument is in the body of request: ", done => {
let requestBody = {
requiredArgument: "product"
};
chai
.request(app)
.post("/test")
.send(requestBody)
.end((err: Error, res: any) => {
res.should.have.status(200);
done();
});
});
});
});
我确定它对/products
而不是/test
进行POST
,我在/products
中有一个被执行的console.log
。 为什么它被路由到那个端点,它发生只是因为它首先被声明?
这部分看起来很奇怪:
app.use("/", productRouter);
app.use("/", testRouter);
如果您更改 testRouter 的("/")
部分并可能使其像这样,会发生什么:
app.use(testRouter);
或者
app.use("/api", testRouter);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.