首页 > 解决方案 > 避免使用 localhost 来解决 mocha 中的测试

问题描述

出于某种原因,当我这样设置我的应用程序时test.js

const app = express();

我收到所有测试的 404 错误。

但是,当我这样设置时

const app = 'http://localhost:3000'

所有测试都通过。

我知道这不是app在测试环境中声明的最佳方式。如何避免使用像 localhost 这样的修复路径?

例子:

const express = require('express');
const app = express();
// const app = 'http://localhost:3000'
const chai = require("chai");
const expect = chai.expect;
const request = require('supertest');

  it('For all bookings', function (done) {
    request(app)
      .get('/bookings')
      .end(function (err, res) {
        expect('Content-Type', /json/)
        expect(res.statusCode).to.be.equal(200);
        done();
      });
  });

这样我得到Uncaught AssertionError: expected 404 to equal 200

但是如果我取消注释const app = 'http://localhost:3000'以使用它而不是const app = express();然后测试通过。

标签: node.jsexpressmocha.jschaisupertest

解决方案


const app = express()创建没有路由的虚拟 Express 实例。它无法响应对/bookings端点的请求,因为没有这样的端点。

http://localhost:3000意味着具有/bookings路由的应用程序当前正在运行。

如果向 Supertest 提供应用程序实例,则应导入request具有路由的应用程序实例:/bookings

const app = require('./app');

推荐阅读