嗨,我对 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/