gpt4 book ai didi

node.js - 如何导入用于 Supertest 测试的路由?

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:40 24 4
gpt4 key购买 nike

我有一个经过 Mocha 测试的应用程序,并且能够使用我现在拥有的内容成功运行测试,但我在测试文件中显式设置了到 /api/v1GET 路由。这是测试文件...

API.js:

var request = require('supertest');
var express = require('express');
var app = express();
var router = express.Router();

app.get('/api/v1', function (req, res, next) {
res.json({
"Hello": "World"
});
});

describe('API', function () {
it("Says 'Hello' is 'World'", function (done) {
request(app)
.get('/api/v1')
.expect('Content-Type', /json/)
.expect(200, {
Hello: 'World'
}, done);
});
});

您注意到我在 require() 语句之后怎么说 app.get() 了吗?我不想在这里这样做。我希望能够从项目的 routes 目录导入我的路线。

我发现很难相信我应该在测试文件中复制所有这些路由。我想如何从 routes 目录导入路由以用于此测试文件?

最佳答案

不需要将路由导入到测试文件中。在 express.Router 对象上定义路由并且 app 使用路由器后,只需从主应用程序文件导出 app 即可。

您将在单独的文件中定义路由并导出路由器。routes.js

var express = require('express');
var router = express.Router();

// Define routes
router.get('/api/v1', function (req, res, next) {
res.json({
"Hello": "World"
});
});

// Export the router. This will be used in the 'app.js' file.

app.js

//Import the router
var router = require('./routes');

// Use the router as middleware for the app. This enables the app to
// respond to requests defined by the router.
app.use('/', router);

// Export the app object
module.exports = app;

app.spec.js

// Import the app
var app = require('./app');

// Use the app object in your tests
describe('API', function () {
it("Says 'Hello' is 'World'", function (done) {
request(app)
.get('/api/v1')
.expect('Content-Type', /json/)
.expect(200, {
Hello: 'World'
}, done);
});
});

express.Router 帮助组织您的路线。这个问题在这里得到了完美的回答:What is the difference between "express.Router" and routing using "app.get"?

关于node.js - 如何导入用于 Supertest 测试的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com