javascript - super 测试未找到错误测试快速端点

标签 javascript node.js express jestjs supertest

我尝试设置 jest、supertest 和express,但失败了。我有这 2 个简单文件

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 错误:预期 200“OK”,得到 404“Not Found”

出了什么问题?

我在浏览器中访问 localhost:3000 我可以看到“Hello World!”

最佳答案

您应该重构index.js并创建app.js

app.js

const express = require("express");
const app = express();
app.get("/", (req, res) => res.send("Hello World!"));

index.js

const app = require('./app')
const port = process.env.PORT
app.listen(port, () => { console.log(`listening on ${port}) . })

我们这样重构代码的原因是我们需要访问express app(),但我们不希望调用“listen”。

in your test file

const request = require("supertest");
const app = require("../src/app");

describe("/", () => {
  test("it says hello world", done => {
    request(app)
      .get("/")
      .expect(200)
      .end(function(err, res) {
        console.log("err", err);
      });
  });
});

关于javascript - super 测试未找到错误测试快速端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122778/

相关文章:

node.js - Socket.io 自过去 1 周以来已停止工作

javascript - 在 Express 应用程序初始化期间加载 JSON 文件

javascript - 如何在 javascript 中读取 20 位整数?

javascript - 仅在单击的 DIV 中应用 .toggle() 方法

javascript - 每当我使用 axios 向后端 API 发出 GET 请求时,Vue.js 应用程序都在 http ://localhost:8080, 上运行,本地主机被添加到 URL

javascript - 有没有在 TypeScript 项目中使用 JavaScript 模块的正确方法?

javascript - 在插入 MySQL 之前尝试转义数据时出现 Node.js 错误

node.js - MongoError : Mod on _id not allowed

javascript - Node.js、Express.js 不向客户端发送文件

mysql - 使用 sequelize,如何将 OR 运算符与 where 条件一起使用?