繁体   English   中英

如何从快速路由获取功能以进行单元测试?

[英]How to get functions from express routes for unit testing?

我有一个JS控制器,其中导出了一些路由。 我想了解用于单元测试的路由中使用的功能。

请注意,我已经看到很多博客提倡创建真实的http请求以对快速路由进行单元测试。 那不是我书中的单元测试。 这是更多的单元测试。

我想直接在测试中调用函数,从而将框架(大部分)排除在测试之外。

例如:

controller.js:

var express = require('express');
var router = express.Router();

function foo(req, res) { ... }
function bar(req, res) { ... }

router.route("/api/foo").get(foo);

router.route("/api/bar").post(bodyParser, bar);

module.exports = router;

在单元测试中,我想直接调用foo(res, res) (我将创建一些模拟req和res对象)

执行所需操作的最简单方法是将每个函数添加到module.exports 这样,您可以要求控制器进行测试并直接调用函数。

// controller.js
module.exports = router;
module.exports._spec = {
  foo: foo,
  bar: bar
};


// controlerSpec.js
var app = require('controller');

app._spec.foo(mockReq, mockRes);

暂无
暂无

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

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