node.js - 为 mocha 测试调用路由

标签 node.js express routes mocha.js chai

我正在尝试使用 mocha 和 chai 编写单元测试,我面临的主要问题是我必须为每个 API 专门定义 url,即

test.js

var expect = require('chai').expect;
var should = require('chai').should;
var express = require('express');
var chai = require('chai');
var chaiHttp = require('chai-http');
chai.use(chaiHttp);

var baseUrl = 'http://localhost:3000/api';

describe("Test case for getting all the  users", function(){
                it("Running test", function(done){

                    this.timeout(10000);    //to check if the API is taking too much time to return the response.

                    var url = baseUrl + '/v1/users?access_token=fd085c73227b94fb3d1d5552b5a62be963b6d068'

                    chai.request(url)
                    .get('')
                    .end(function(err, res) {
                        //console.log('routes>>>>', routes);
                        expect(err).to.be.null;
                        expect(res.statusCode).to.equal(200);   // <= Call done to signal callback end
                            expect(res).to.have.property('text');
                            done();                              
                    });
                });
            });

我希望我所有的路由都应该直接从我的 routes.js 文件中调用,而不是对每个 url 进行硬编码,这可能吗? TIA。

最佳答案

您可以为路由器对象创建一个初始化函数来填充您的路由。将该 init 函数用于测试和实际代码。这是一个例子:

//
// initRouter.js
//
function initRouter(router){
    router.route('/posts')
        .post(function(req, res) {
            console.log('req.body:', req.body)
            //Api code
        });
    router.route('/posts/:post_id')
        .get(function(req, res) {
            console.log('req.body:', req.body)
            //Api code
        })
    return router;
}
module.exports = initRouter;

//
// in the consumer code
//
var initer = require('./initRouter');
app.use('/api', initer(express.Router()));

关于node.js - 为 mocha 测试调用路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38996942/

相关文章:

javascript - 我是否需要关闭每个具有等待结果回调的方法?

javascript - JavaScript中的数据竞赛?

node.js - AngularJS 和 NodeJs Express : routes and refresh

node.js - 如何优化 Express.js 路由?

routes - Symfony 4 如何在所有 Controller 的 URL 中运行 _locale 前缀?

node.js - 如何在 V8 中取消缓存 error.stack?

node.js - 发布具有不同依赖项的两个版本的 npm 模块

javascript - 使用 MEAN Express 4.x 和 Node.js 未定义 req.body

node.js - 在 Node.js 中访问 HTTP 请求的时间戳

node.js - Nodejs Express router.get ('/' ) 在 users.js 中