2015-06-22 50 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

相关问题