在前端开发中,测试是不可或缺的一环,而 Mocha 是一个流行的 JavaScript 测试框架。它支持多种测试样式,包括 BDD 和 TDD。但有时候,我们测试需要在某些情况下提供一个假的返回值或者捕获一个函数被调用的情况,这就是 Stubbing。本文将介绍在 Mocha 测试框架中如何实现 Stubbing。
什么是 Stubbing
Stubbing 是指通过一个假的返回值或者捕获一个函数被调用的行为,修改程序的执行结果。当我们测试一个模块,有时候必须模拟外部的各种情况,为此我们需要使用 Stubbing。
在 Mocha 中实现 Stubbing
在 Mocha 中实现 Stubbing,我们需要引入 sinon.js,它是一个专门用于模拟和协作测试的库,可以很好地与 Mocha 集成。下面我们来看一个例子。
我们有一个名为 calculator.js
的模块,代码如下:
function calculator(a, b) { return a + b; } module.exports = { calculator };
我们要测试 calculator
这个函数,但前提是它依赖于外部的另一个函数,这个函数不在我们的控制范围内,我们需要对这个函数进行 Stubbing 以使我们的测试正常进行。
-- -------------------- ---- ------- ----- ----- - ----------------- ----- - ---------- - - ------------------------ ---------------------- -- -- - ------------- -- - ------------ - ------------------------ --- ------------ -- - --------------------- --- ---------- --- - --------- ---- -- - ----- ------ - ------------- --- -------------------------------------- -------------------------------------------- -- --- --------------------------- --- ------- --- ---
在这个测试用例中,我们没有引入外部的代码,而是把它替换为一个假的函数 addStub
。我们在 beforeEach
里面定义了这个假的函数,并且设置了它的返回值为 2。然后在测试用例里面,我们通过 sinon.assert.calledOnce
来检验调用次数,sinon.assert.calledWithExactly
来检验参数,最后使用 sinon.assert.equals
来比较结果。
总结
本文介绍了在 Mocha 测试框架中如何实现 Stubbing。在这个过程中,我们使用了 sinon.js 这个专门用于模拟和协作测试的库,通过 sinon.stub()
创建了一个假的函数,并设置了它的返回值。Stubbing 是一个常见的测试技术,可以帮助我们测试一些不可控因素的代码,让我们的测试更加完整,准确。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e2fc51f6b2d6eab3e4a8e5