簡體   English   中英

簡單單元測試NodeJS / Express

[英]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 requestresult 我簡單不知道該怎么做?!

當你做

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM