在进行前端开发时,使用 npm 包可以提高开发效率。一个优秀的 npm 包可以为我们提供强大的功能,并能够提供便捷的使用方式。其中,@makerdao/test-helpers 是一个非常优秀的 npm 包,它可以帮助我们的前端项目进行测试,提高测试覆盖率。
本教程将介绍 @makerdao/test-helpers 的基本使用方法,包括安装、引用,以及常用的方法及其使用实例,让您快速上手使用 @makerdao/test-helpers。
安装
在您的项目中使用 @makerdao/test-helpers,首先需要安装它。使用以下命令可以在项目中安装 @makerdao/test-helpers。
npm install @makerdao/test-helpers --save-dev
引用
安装完成后,可以使用以下方式在项目中引入 @makerdao/test-helpers。
-- -------------------- ---- ------- ------ - -- --------- ------------ ----------- --------------- ------------ ------------ --------- ------------- ------------ -------------- ------------ - ---- -------------------------
方法及实例
advanceTime(_time)
从当前时间向前移动_time秒。在测试环境下使用,time需要自己确定,单位为秒。
-- -------------------- ---- ------- -------- ------------- ----- -- -- - ----- -------- - ----- ------------------------ ----- ----------- - ------ ----------------- -------------------------------------- ----- ---------------- ----- ---------- - ----- ----------------- --------------------------- --------------------------------------- ----------- - --- --- ----- ----------------------- ----- ----------- - ----- ----------------- --------------------------- ---------------------------------------- ----------- - --- --- --
mineBlocks(numberOfBlocks)
在当前时间之后多mine几个blocks,每个block的时间戳递增1。在测试环境下使用。
-- -------------------- ---- ------- -------- ------------ ----- -- -- - ----- -------- - ----- ------------------------ ----- ------------ - ----- --------------------- --------------------------- ----- -------------- ----- ----- - ----- --------------------- --------------------------- ---------------------------------- ---------------------- - -- --- ----- ----------------------- ----- ------ - ----- --------------------- --------------------------- ----------------------------------- ---------------------- - -- --- --
increaseTimeTo(targetTime)
从当前时间向前移动到给定的时间。当前时间大于或等于目标时间,则不会有任何作用。在测试环境下使用。单位为秒。
-- -------------------- ---- ------- -------- ---------------- ----- -- -- - ----- -------- - ----- ------------------------ ----- ----------- - ------ ----------------- -------------------------------------- ----- -------------------------- - ---- -- ---- ----- ---------- - ----- ---------------------------------- --------------------------------------- ----------- - --- --- ----- ----------------------- ----- ----------- - ----- ----------------- --------------------------- ---------------------------------------- ----------- - --- --- --
blockNumber()
获取当前区块高度。只在测试环境下使用。
it('test blockNumber', async () => { await mineBlocks(3); const blockNum = await blockNumber(); assert.equal(blockNum, startBlock + 3); })
latestBlock()
获取最新的区块。只在测试环境下使用。
it('test latestBlock', async () => { const latestBlockNum = await latestBlock().number; const currentBlockNum = await ethGetBlockNumber(); assert.equal(latestBlockNum, currentBlockNum); })
duration
将以秒为单位的时间转换为 BigNumber。使用时需要传入字符串或数字。
it('test duration', async () => { const time = duration('1h'); assert.equal(time.toString(), '3600'); })
assertRevert(promise)
确保要测试的函数会在执行时抛出 Revert,否则将会失败。只在测试环境下使用。
it('test assertRevert', async () => { const contract = await YourContract.deployed(); await expectThrow(contract.doSomethingThatShouldThrow()); })
expectThrow(promise)
确保要测试的函数会在执行时抛出错误,否则将会失败。
it('test expectThrow', async () => { const contract = await YourContract.deployed(); await expectThrow(contract.doSomethingThatShouldThrow()); })
assertBnClose(actual, expected, precision)
测试 BigNumber 是否在 expected 的范围内。
it('test assertBnClose', async () => { const actualValue = await contract.getAValue(); assertBnClose(actualValue, BN(300), BN(15)); // 280 <= actualValue <= 320 })
bigNumberify(value)
将给定的值转换为 BigNumber 类型。
it('test bigNumberify', async () => { const value = 123456; const bigNumberValue = bigNumberify(value); assert.equal(bigNumberValue.toNumber(), value); })
总结
以上是 @makerdao/test-helpers 的基本使用方法以及常用的方法及其使用实例。它是一个很好的工具,可以帮助我们提高前端项目的测试覆盖率,从而提高项目的稳定性和可靠性。掌握了这些方法,相信您可以更加轻松地进行前端开发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedac35b5cbfe1ea0610980