简介
Chai-Spies 是一个基于 Chai.js 的 npm 包,用于在 JavaScript 测试中提供 Spy 功能。Spy 用于捕获函数的调用和参数,并且可以向测试报告中添加有用的信息。本教程将指导您如何使用 Chai-Spies 来增强您的 JavaScript 测试。
安装
要安装 Chai-Spies,您需要先安装 Chai.js:
npm install chai --save-dev
然后安装 Chai-Spies:
npm install chai-spies --save-dev
基本用法
接下来,我们将编写一个简单的测试并使用 Chai-Spies 捕获函数调用和参数。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----- - ---------------------- ---------------- -------- ------ -- - ------ - - -- - --------------- ---------- - ---------- --- --- ------- ---------- ---------- - ----- --- - -------------- ----- ------ - ------ --- -------------------------------- -------------------------------------------- --- --- ---
在上述示例中,我们使用 chai.spy
创建了一个 Spy 并将其传递给 add
函数。然后,我们调用 spy
函数并断言它返回了正确的结果。最后,我们使用 chai.expect
断言 Spy 是否被正确地调用。
API
chai.spy([name], [fn])
创建一个 Spy。参数 name
是可选的,用于指定 Spy 的名称。参数 fn
是可选的,用于指定要 Spy 的函数。
const spy = chai.spy('console.log', console.log);
spy([arg1, arg2, ...])
调用 Spy 并将给定的参数传递给它。如果未指定参数,则调用 Spy 时不传递任何参数。
const spy = chai.spy(); spy(1, 2, 3); chai.expect(spy).to.have.been.called.with(1, 2, 3);
spy.__spy
Spy 对象上的属性,用于获取有关函数调用的详细信息。
const spy = chai.spy(console.log); console.log('Hello, world!'); console.log('Goodbye, world!'); chai.expect(spy.__spy.calls.length).to.equal(2); chai.expect(spy.__spy.calls[0]).to.have.been.called.with('Hello, world!'); chai.expect(spy.__spy.calls[1]).to.have.been.called.with('Goodbye, world!');
spy.__spy.calls
Spy 对象上的数组,包含有关每个函数调用的详细信息。
const spy = chai.spy(console.log); console.log('Hello, world!'); console.log('Goodbye, world!'); chai.expect(spy.__spy.calls.length).to.equal(2); chai.expect(spy.__spy.calls[0]).to.have.been.called.with('Hello, world!'); chai.expect(spy.__spy.calls[1]).to.have.been.called.with('Goodbye, world!');
spy.__spy.calls[index]
包含有关特定函数调用的详细信息的对象。每个对象具有以下属性:
this
: 调用函数时使用的this
值。arguments
: 一个数组,包含传递给函数的实际参数列表。returned
: 当调用函数时返回的值。
const spy = chai.spy(function(a, b) { return a + b; }); const result = spy(1, 2); chai.expect(spy.__spy.calls[0].this).to.equal(undefined); chai.expect(spy.__spy.calls[0].arguments).to.deep.equal([1, 2]); chai.expect(spy.__spy.calls[0].returned).to.equal(3);
结论
Chai-Spies 是一个非常有用的工具,可以提供 Spy 功能来捕获函数的调用和参数,从而帮助您编写更好的
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/40913