2015-06-22 51 views
1

我在Node.js的開發服務,並希望創造我的第一次摸查檢驗這種在一個單獨的文件test.js,這樣我就可以像這樣運行測試:如何讓我的node.js mocha測試運行?

mocha test 

我想不出如何獲得參考,以我的應用程序,routes.js:

var _ = require('underscore'); 
module.exports = function (app) { 
    app.post('/*', function (req, res) { 
     var schema={ 
      type: Object, 
      "schema": 
      { 
       "totalRecords": {type:Number} 
      } 
     }; 
     var isvalid = require('isvalid'); 
     var validJson=true; 
     isvalid(req.body,schema 
      , function(err, validObj) { 
       if (!validObj) { 
        validJson = false; 
       } 
       handleRequest(validJson,res,err,req); 
      }); 
    }) 
} 

這是server.js:

// set up ====================================================================== 
var express = require('express'); 
var app = express();        // create our app w/ express 
var port = process.env.PORT || 8080;    // set the port 
var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

app.use (function (error, req, res, next){ 
    res.setHeader('content-type', 'application/json'); 
    res.status(400); 
    res.json({ 
     "error": "errormsg" 
    }); 
}); 

// routes ====================================================================== 
require('./routes.js')(app); 

// listen (start app with node server.js) ====================================== 
app.listen(port); 
console.log("App listening on port " + port); 

最後test.js:

"use strict"; 

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

describe('testing filter', function() { 
    it('should return an error', function (done) { 
     request(app) 
      .post('/') 
      .send({"hh":"ss"}) 
      .expect(400,{"error": "errormsg"}) 
      .end(function (err, res) { 
       if (err) { 
        done(err); 
       } else { 
        done(); 
       } 
      }); 
    }); 
}); 

回答

0

創建一個名爲app.js的單獨文件。這個文件的唯一目的是運行服務器。您還需要從server.js中導出您的應用程序對象。所以,你的server.js應該是這樣的

// set up ====================================================================== 
var express = require('express'); 
var app = express();        // create our app w/ express 
var port = process.env.PORT || 8080;    // set the port 
var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

app.use (function (error, req, res, next){ 
    res.setHeader('content-type', 'application/json'); 
    res.status(400); 
    res.json({ 
     "error": "errormsg" 
    }); 
}); 

// routes ====================================================================== 
require('./routes.js')(app); 

module.exports = app; 

創建一個新的文件名爲app.js,並把這個裏面它現在

var app = require('./app'); 
var port = process.env.port || 8000; 

app.listen(port, function() { 
    console.log("App listening on port " + port); 
}); 

,你的測試文件裏面,導入你的應用程序作爲如下

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

請注意,我假設你所有的文件都在同一個目錄下。如果您已將測試文件放在不同的文件夾中,則需要在請求應用程序對象時提供正確的路徑。

+0

我剛剛嘗試過這一點,並且在運行'mocha test'時出現此錯誤:錯誤:無法解析路徑(或模式)'test.js' – Pindakaas

+0

您在哪裏放置測試文件? –

+0

它是所有在同一個根目錄 – Pindakaas

相關問題