gpt4 book ai didi

javascript - 简单的 NodeJS/Express 单元测试

转载 作者:行者123 更新时间:2023-12-03 07:05:43 25 4
gpt4 key购买 nike

嗨,我对 NodeJs 还很陌生,我正在尝试编写我的第一个测试。

我对设置有点困惑,所以我希望得到一些帮助。

我写了这两个函数:

app.js:

var express = require('express')
, cors = require('cors')
, app = express();

app.get('/a_nice_jsonp',cors(corsOptions), function(req, res, next){
var result = parseCookies(req);
res.jsonp(result);
});

app.get('',function(req,res,next){
res.statusCode = 200;
res.end()
});

我不会将其导出为模块,因为它是我唯一的文件。

我认为为此编写测试非常容易。我从这样的事情开始:

app-test.js:

var expect = require('expect.js');
var express = require('express');
var expressApp = express();

describe('app js test', function() {
describe('GET /', function() {
it('should respond to GET with empty path', function () {
expressApp.get('', function(req, res, body){
expect(res.status).to.equal(200);
});
})
});
});

我认为它确实读起来像是一个简单的任务,但我似乎无法转移测试的设置以及如何进行它。

有人可以帮我吗?

编辑:上述测试运行良好。但是,我在测试时遇到困难,例如.end() 以及 jsonp 请求 中的结果。我简单不知道该怎么做?!

最佳答案

当你这样做时

expressApp.get('', function(req, res, body){
expect(res.status).to.equal(200);
});

您只是绘制路线。

要测试您的 REST API,您必须使用类似 supertest 的库(该链接中有一个使用express + mocha进行测试的示例)

它是这样工作的

var request = require('supertest');
var express = require('express');

var app = express();

app.get('/a_nice_jsonp',cors(corsOptions), function(req, res, next){
var result = parseCookies(req);
res.jsonp(result);
});

app.get('',function(req,res,next){
res.statusCode = 200;
res.end()
});

describe('app js test', function() {
describe('GET /', function() {
it('should respond to GET with empty path', function (done) {
request(app)
.get('')
.expect(200)
.end(done)
});
});
});

使用单独的文件进行编辑

app.js

var express = require('express')
, cors = require('cors')
, app = express();

app.get('/a_nice_jsonp',cors(corsOptions), function(req, res, next){
var result = parseCookies(req);
res.jsonp(result);
});

app.get('',function(req,res,next){
res.statusCode = 200;
res.end()
});
module.exports = app;

应用程序测试.js

var request = require('supertest');
var app = require('app.js');


describe('app js test', function() {
describe('GET /', function() {
it('should respond to GET with empty path', function (done) {
request(app)
.get('')
.expect(200)
.end(done)
});
});
});

关于javascript - 简单的 NodeJS/Express 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836540/

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