在前端开发中,完成任务后如何验收代码的正确性呢?通常是通过人工检查或使用测试框架来检查代码实现的正确性。而 done-criteria 包则提供了一种更加方便、可配置的方式来进行验收。
什么是 done-criteria
done-criteria 是一款基于 Promise 的验收工具包。开发者可以通过配置“完成标准”,即满足什么情况下代码算是完成了,来自动化完成验收流程。
安装 done-criteria
你可以通过 npm 直接安装 done-criteria:
npm install done-criteria
接着,你可以在项目中引入 done-criteria:
const DoneCriteria = require('done-criteria');
如何使用 done-criteria
done-criteria 的主要 API 为 done
方法。当你需要验证你方法的结果时,你可以用 done
方法设置完成标准,done-criteria 会根据你设置的完成标准来判断方法是否完成,完成后 done 方法会返回一个 Promise 对象。
下面是一个简单的例子:
-- -------------------- ---- ------- ----- ------------ - ------------------------- -------- ----------- -- - ----- ------------ - --- --------------- ----- ------ - - - -- -- ------- - --- - -------------------- - ------ -------------------------- - ----- -------- ------ - ----- ------- - ----------- --- ----- -------- -------------------- - -------
在这个例子中,我们定义了一个 multiply
方法,它接受两个参数 x
和 y
,并将它们相乘。如果 result
大于 10,则我们认为方法完成了,调用 doneCriteria.done()
来设置完成标准,最后返回 doneCriteria.getPromise()
。
在 main
方法中,我们调用了 multiply
方法,并等待其完成。如果 multiply
方法返回的 Promise 成功被解析,控制台将输出“验证通过”。
可以看到,我们在上述例子中只是使用了 done-criteria 最基本的功能。下文将介绍其更多用法。
配置完成标准
可以通过在 done 方法中传入参数来配置完成标准。完成标准可以是以下类型之一:
对象字面量
doneCriteria.done({ result: { responseCode: 200, }, });
该标准表示,当返回结果中的 responseCode 属性等于 200 时,认为方法已完成。
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
result | Any | undefined | 预期的返回结果 |
error | Error | undefined | 预期的错误 |
布尔值
doneCriteria.done(false);
该标准表示,方法完成时需要返回 false。
函数
doneCriteria.done(() => { return result === expected; });
该标准表示,方法完成时需要返回一个满足条件的值。
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
result | Any | undefined | 方法返回的结果 |
error | Error | undefined | 方法抛出的错误 |
expected | Any | undefined | 预期值 |
校验重试
如果你的方法需要多次校验才能达到完成标准,你可以使用 doneCriteria.retry
方法来配置校验重试的方式。它接受以下参数:
参数 | 类型 | 描述 |
---|---|---|
options | Object | 配置项 |
options.times | Number | 最大校验次数,默认值为 1 |
options.interval | Number | 校验间隔,单位为毫秒,默认值为 1000 |
condition | Function | 校验条件 |
以下是一个具体例子:
-- -------------------- ---- ------- ----- ------------ - --- --------------- --- ----- - -- -------- ------------- - -------- -- ------ -- -- - -------------------- - - ------------------- - ------ --- --------- ---- -- -- -- - ------ --- ----------------- -- - ------------- -- - -------------- ---------- -- ----- --- - --
在本例中,假设 doSomething
方法会在第 5 次调用时返回合适的结果。我们使用 doneCriteria 的 retry
方法,它调用 doSomething
方法进行校验,直到返回的结果达到完成标准为止。我们将 retries 的最大次数和校验间隔都设置较高,以便我们可以在测试时观察它的工作方式。
高级用法
除了上面提到的用法,done-criteria 还提供了更多的 API,可以满足更多需求。
changeCondition(condition)
该方法用于更改预期条件。如果该方法在调用 done
方法之前被调用,则调用 done
方法时,新的条件将覆盖旧条件。
getPromise()
该方法返回 done
方法返回的 Promise 对象。
isDone()
该方法返回一个布尔值,表示是否已满足完成标准。
abort()
该方法强制终止当前的校验。
then(callback)
该方法用于向 Promise 对象注册回调函数。
catch(callback)
该方法用于向 Promise 对象注册异常处理函数。
结语
done-criteria 是一个非常实用的验收工具,可以帮助我们节省大量的验收时间和人力成本。当你在处理类似的自动化验收任务时,务必考虑使用该工具!
完整的代码示例可以在 GitHub 上找到。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedbadcb5cbfe1ea0611926