gpt4 book ai didi

node.js - 具有异步回调的单元测试快速路由

转载 作者:搜寻专家 更新时间:2023-10-31 23:54:24 24 4
gpt4 key购买 nike

我正在使用 express 在 node.js 中编写应用程序。
我将路由定义与 express 分开,这样我就可以在不模拟 express 的情况下对其进行单元测试。
我所做的是:

文件:usersRoutes.js

 var routes = {
getAll: function(req,res) {
var db = req.db; // req.db is initialized through a dedicated middleware function
var usersCollection = db.get('users');
usersCollection.find({},{limit:10},function(e,results){
res.send(results);
});
}
};

module.exports = routes;

文件:users.js

var express = require('express');
var router = express.Router();
var routes = require('./usersRoutes');

/* GET users listing. */
router.get('/', routes.getAll);

module.exports = router;

最后在 app.js 中:

var users = require('./routes/users/users.js');
app.use('/users', users);

现在,我想编写一个单元测试来检查是否使用正确的参数调用了 req.send。我无法找到正确的方法,因为 req.send 是异步调用的。
对该函数进行单元测试的正确方法是什么?

最佳答案

如果您使用的是 mocha,它会提供“完成”函数,您可以将其注入(inject)到回调中,它会告诉 mocha 测试是异步的,应该等到该函数被调用

it('should do something',function(done){
reuest.send(function(){
expect(true).toEqual(true);
done()
})
})

或类似的东西,我不记得这是 100% 正确的语法,但非常接近这对回调很有用,但另一方面,如果你使用 promises,你应该检查 chai 和 mocha 的 promises 断言,非常酷

关于node.js - 具有异步回调的单元测试快速路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com