【发布时间】:2019-10-01 00:42:56
【问题描述】:
我尝试设置 jest、supertest 和 express 但失败了。我有这两个简单的文件
index.js
const express = require("express");
const app = express();
const port = 3000;
app.get("/", (req, res) => res.send("Hello World!"));
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
和 index.test.js
const express = require("express");
const app = express();
const request = require("supertest");
describe("/", () => {
test("it says hello world", done => {
request(app)
.get("/")
.expect(200)
.end(function(err, res) {
console.log("err", err);
});
});
});
当我运行测试时,我收到了这个错误。
err Error: expected 200 "OK", got 404 "Not Found"
怎么了?
我在浏览器中访问 localhost:3000 我可以看到“Hello World!”
【问题讨论】:
-
问题在于测试文件中的新应用实例。您应该从 index.js 导出应用程序实例并在 index.test.js 中使用它,或者将测试与 index.js 中的代码一起编写,这不是生产代码的首选。
-
我现在收到这个错误`listen EADDRINUSE: address already in use :::3000`
-
不要使用
node index.js或类似的方式启动服务器。 Supertest 会运行它。 “您可以将 http.Server 或函数传递给 request() - 如果服务器尚未侦听连接,则它会为您绑定到临时端口,因此无需跟踪端口。”跨度> -
请参阅tutorial,它将详细解释步骤。我快速浏览了一下,但没有阅读全文。
标签: javascript node.js express jestjs supertest