[Unit Testing] Unit Test a Function that Invokes a Callback with a Sinon Spy
Unit testing functions that invoke callbacks can require a lot of setup code. Using sinon.spy
to create a fake callback function can simplify your unit tests while still allowing you to observe the output of the function you're testing.
const fs = require("fs"); const assert = require("assert"); const sinon = require("sinon"); const jQuery = require("jQuery"); function getTempFiles(callback) { const contents = fs.readdirSync("/tmp"); return callback(contents); } describe("getTempFiles", () => { it("should call the provided callback", () => { const spy = sinon.spy(); getTempFiles(spy); assert.equal(spy.callCount, 1); assert.ok(spy.getCall(0).args[0] instanceof Array); }); it("should call the function with correct args", () => { var object = { method: function() {} }; var spy = sinon.spy(object, "method"); object.method(42); object.method(1); assert.ok(spy.withArgs(42).calledOnce); assert.ok(spy.withArgs(1).calledOnce); }); it("should wrap a existing method", () => { sinon.spy(jQuery, "ajax"); jQuery.getJSON("/some/resource"); assert.ok(jQuery.ajax.calledOnce); }); });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-09-19 [CSS] Build a Fluid Loading Animation in CSS
2017-09-19 [Node & Testing] Intergration Testing with Node Express
2017-09-19 [Node] Stateful Session Management for login, logout and signup
2017-09-19 [Node.js] Serve Static Files with Express
2016-09-19 [Angular 2] Create Shareable Angular 2 Components
2016-09-19 [Angular 2] Import custom module
2016-09-19 [Angular 2] Understanding Pure & Impure pipe