简单单元测试 NodeJS/Express
Simple Unit Testing NodeJS/Express
嗨,我是 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()
以及 result
中的 jsonp request
。我简单的不知道怎么做呢?!
当你这样做时
expressApp.get('', function(req, res, body){
expect(res.status).to.equal(200);
});
你只是在绘制路线。
要测试您的 REST API,您必须使用像 supertest 这样的库(link 中有一个使用 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;
应用-test.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)
});
});
});
嗨,我是 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()
以及 result
中的 jsonp request
。我简单的不知道怎么做呢?!
当你这样做时
expressApp.get('', function(req, res, body){
expect(res.status).to.equal(200);
});
你只是在绘制路线。
要测试您的 REST API,您必须使用像 supertest 这样的库(link 中有一个使用 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;
应用-test.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)
});
});
});