簡體   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