我开始使用chai和mocha测试我的node.js网站的组件,但是当我运行npm test时,我得到了这个错误:
'类型错误:request.post(...).send不是函数'
这是我的test.js文件中的代码:
const chai = require("chai");
const expect = chai.expect;
const app = require("./app.js");
const express = require("express");
const request = express();
describe("POST /register", () => {
it("should register a new user and redirect to login page", (done) => {
const user = {
email: "johndoe@example.com",
username: "johndoe",
password: "password",
userType: "user"
};
request.post("/register")
.send(user)
.end((err, res) => {
expect(res.status).to.equal(302);
expect(res.header.location).to.equal("/login");
done();
});
});
});
我是Node.js的新手,所以我还在了解单元测试是如何执行的。任何帮助将是一个感激
2条答案
按热度按时间wlp8pajw1#
request
是Express路由器对象。request.post("/register")
不是发送请求,而是在该路由器上注册一条路径。你实际上要做的是发送一个请求。因为Express用于创建服务器,而不是发送请求,所以您必须使用不同的库。您的代码似乎试图使用
supertest
,这是一个发送请求的测试库。要使用supertest,请首先将其与
npm i supertest
一起安装,然后更改在代码中添加
xe55xuns2#
这可能是因为request是express()的示例,而不是像supertest这样的请求库。
要解决这个问题,您可以request.post使用supertest库将www.example.com(“/register”)替换为请求,如下所示:
要获取地址,请使用以下语法