unexpected-sinon 是一个基于 Sinon.js 和 Unexpected.js 的 npm 包,为单元测试提供了强大的断言库。本文将详细介绍 unexpected-sinon 的使用方法和示例代码。
安装 unexpected-sinon
使用 npm 安装 unexpected-sinon:
npm install unexpected-sinon --save-dev
引入 unexpected-sinon
在测试文件中引入 unexpected-sinon:
const expect = require('unexpected'); const sinon = require('sinon'); require('unexpected-sinon');
基本用法
unexpected-sinon 提供了大量的断言方法,我们可以通过 expect.sinon 来访问这些方法。下面是一些常用的断言方法:
toHaveBeenCalled
判断一个 sinon spy 是否被调用过:
expect(sinon.spy(), 'to have not been called'); expect(sinon.spy(), 'not to have been called'); expect(sinon.spy(), 'to have been called');
toHaveBeenCalledOnce
判断一个 sinon spy 是否只被调用了一次:
expect(sinon.spy(), 'to have been called once');
toHaveBeenCalledWith
判断一个 sinon spy 是否被传递了指定的参数调用:
const spy = sinon.spy(); spy('foo', 'bar'); expect(spy, 'to have been called with', 'foo', 'bar');
toHaveReturned
判断一个 sinon stub 是否返回了指定的值:
const stub = sinon.stub().returns(42); expect(stub, 'to have returned', 42);
toHaveReturnedWith
判断一个 sinon stub 是否以指定的参数返回:
const stub = sinon.stub(); stub.withArgs('foo').returns(42); expect(stub, 'to have returned with', 42);
高级用法
unexpected-sinon 还提供了一些高级的断言方法,例如:
toHaveAlwaysReturned
判断一个 sinon stub 是否始终返回指定的值:
const stub = sinon.stub().returns(42); expect(stub, 'to always have returned', 42);
toHaveAlwaysThrown
判断一个 sinon stub 是否始终抛出指定的错误:
const stub = sinon.stub().throws(new Error('oops')); expect(stub, 'to always have thrown', new Error('oops'));
toHaveCallCount
判断一个 sinon spy 被调用的次数:
const spy = sinon.spy(); spy(); spy(); expect(spy, 'to have call count', 2);
toHaveExactlyNthCall
判断一个 sinon spy 在第 N 次调用时传递了指定的参数:
const spy = sinon.spy(); spy('foo'); spy('bar'); expect(spy, 'to have exactly nth call', 1, 'foo');
toHaveBeenCalledOnceWith
判断一个 sinon spy 是否只被调用一次,并且使用指定的参数调用:
const spy = sinon.spy(); spy('foo', 'bar'); expect(spy, 'to have been called once with', 'foo', 'bar');
示例代码
下面是一个简单的示例代码,使用了上述提到的一些断言方法:
-- -------------------- ---- ------- ----- ------ - ---------------------- ----- ----- - ----------------- ---------------------------- ------------------- ---------- - ---------- ---- --- --- ---- ---- ----- --- ------- ---------- - ----- --- - ------------ ---------- ------- ----------- --- ---- ---- ------ ---- ------ ------ ------- --- ---------- ------ -- ---- --- ------ ---------- - ----- ---- - ------------------------- ------------ --- ---- ---------- ---- --- ---
总结
unexpected-sinon 是一个非常强大的单元测试断言库,它结合了 Sinon.js 和 Unexpected.js 的功能,可以大大简化我们的单元测试工作。本文介绍了 unexpected-sinon 的安装、引入和基本用法,以及一些高
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/42064