gpt4 book ai didi

javascript - 使用 mocha 和 supertest 测试 Nodejs。如何获取该应用程序?

转载 作者:行者123 更新时间:2023-12-03 07:37:06 24 4
gpt4 key购买 nike

我正在尝试使用 supertest 测试 Nodejs 应用程序,但无法运行单个路由。我已经缩小了问题范围。在我的测试文件中,我从以下开始:

var app = express();  // this is the problem, this isn't really the app, right?

// testing this dummy works fine, but I want the real one
app.get('/user', function(req, res){
res.status(200).json({ name: 'tobi' });
});

describe('GET /user', function(){
it('respond with json', function(done){
request(app)
.get('/user')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, done);
})
})

...这个测试通过了。但当然,那个虚拟/用户路由不是我想测试的。我想测试我的“真实”应用程序中定义的路由,在 ./server.js 中定义。

即使我只是将虚拟 app.get('/user', function... 定义移动到我的“真实”server.js 文件中,即我使用 nodemon 启动的文件,这个简单测试失败并返回 404。

那么这行代码的真正作用是什么:var app = express();,以及如何获取在我的 server.js 文件中配置的 app ,以便我可以测试一下吗?

最佳答案

您需要从 server.js 导出您的应用。完成此操作后,您可以在测试文件中require该应用。

服务器.js

var express = require('express')

var app = express();

// Your routes here...

// At end of file
module.exports = app;

test.js (在 test 目录中)

var api = require('../server.js'),
request = require('supertest')(api);

describe('noshers', function() {

it('doesn\'t allow GET requests', function(done) {
request
.get('/foo')
.expect(405, done);
});

});

关于javascript - 使用 mocha 和 supertest 测试 Nodejs。如何获取该应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35563942/

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