node.js - 避免使用 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();
然后测试通过。
解决方案
const app = express()
创建没有路由的虚拟 Express 实例。它无法响应对/bookings
端点的请求,因为没有这样的端点。
这http://localhost:3000
意味着具有/bookings
路由的应用程序当前正在运行。
如果向 Supertest 提供应用程序实例,则应导入request
具有路由的应用程序实例:/bookings
const app = require('./app');
推荐阅读
- xml-parsing - 如何在 Python 中使用一些非 xml 格式的元素解析 XML 数据
- firebase - Firebase 远程配置的强制更新功能问题
- javascript - 如何更新 Redux 状态 React Native
- mongodb - MongoDB Realm - 有没有办法在分区之间共享文档以避免重复?
- docker - 带有远程上下文的 docker compose 给出 ssh 错误连接被拒绝
- dictionary - Kotlin:mutableMap 无法识别 put()
- google-chrome - Chrome 上的输入字段显示滚动条
- firebase - 如何显示其他用户的用户名?
- material-design - Android Material Themes 和 Styles 的完整文档,即参考
- javascript - 如何更改数组中对象的属性?