首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在闭包中包装函数以使函数可测试

在闭包中包装函数以使函数可测试
EN

Software Engineering用户
提问于 2014-06-29 11:59:24
回答 1查看 140关注 0票数 2

在我的nodejs项目中,我有类似于socketio的函数。

代码语言:javascript
复制
socket.on('draw', function (data) {
    socket.broadcast.to(socket.room).emit('draw', data);
    addEvent(socket, ["draw", data]);
});

我想把它们改写成这样:

代码语言:javascript
复制
function onDraw(socket, config) {
    return function (data) {
        socket.broadcast.to(socket.room).emit('draw', data);
        addEvent(socket, ["draw", data]);
    }
}

socket.on('draw', onDraw(socket, config));

其思想是,通过像这样将所有函数放在简单的闭包中,我可以将它们放在不同的模块中,并且通过将模拟对象传递给构造回调的函数来简化测试。

,我想知道这是否过分了,或者是否有更好的方法使我的代码可测试?

EN

回答 1

Software Engineering用户

发布于 2014-06-30 08:18:23

IMHO --它并不过分,这只是命令模式的Javascript (或functional)形式,与依赖项注入一起使用。

实现这一目标的经典OO等效方法是构造一个命令类,通过构造函数传递socketconfig,将它们存储在一些成员变量中,并使用该成员变量添加一个成员函数(如Draw(data) )。这将导致更多的样板代码--而您的示例与OO版本相比非常简洁。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/246388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档