繁体   English   中英

如何使我的node.js摩卡测试运行?

[英]How to get my node.js mocha test running?

我已经在node.js中开发了一项服务,并希望在单独的文件test.js中为此创建我的第一个摩卡测试,因此我可以像这样运行测试:

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();
                }
            });
    });
});

创建一个名为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');
....

请注意,我假设所有文件都在同一目录中。 如果将测试文件放在其他文件夹中,则需要在提供应用对象的同时提供正确的路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM