[英]Simple Unit Testing NodeJS/Express
嗨,我是NodeJ的新手,我正在嘗試編寫我的第一個測試。
我對設置有些困惑,因此希望能提供一些幫助。
我寫了這兩個函數:
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 request
的result
。 我簡單不知道該怎么做?!
當你做
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;
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)
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.