npm 包 chai-kefir 使用教程

阅读时长 5 分钟读完

前言

chai-kefir 是一个适用于JavaScript的断言库,允许使用chai的assert,expect,should API结合kefir来测试流数据。本文详细介绍如何使用chai-kefir以及其中的一些技巧和注意点。

安装

使用npm安装chai-kefir:

基础使用

chai-kefir 的使用方式类似chai,使用require加载后直接使用。这里我们对比一下chai和chai-kefir的assert API如何断言一个流数据输出了一个特定的字符串。

chai

-- -------------------- ---- -------
--------- ------ ---- ------ ------ ------ ---- --- ------ -------- -------- ------ -
  ----- ---------- - --------------------- --------
  ----- ------- - -----------------------

  -------------------- -- -
    --------------------------------
    ----------------------------- --------
    -------
  ---
---

chai-kefir

在使用chai-kefir时,我们可以直接将observable对象传入到expect中进行断言,同时使用emit API指定期望的事件类型和每个事件的判断函数。

API

.emit(eventName[, check])

.emit API接收两个参数。

  • eventName 指定期望的事件类型,与kefir中的事件类型一致。
  • check 事件数据的判断函数,用于对每个事件数据进行一系列的断言操作。

在chai-kefir中, .should 相当于 .toexpect()后也可以直接跟.emit

.not.emit(eventName[, check])

.not.emit 用于断言当前的observable在指定的事件类型下不会发出事件。

.to.emitInTime(time, eventName[, check])

.to.emitInTime 用于断言当前的observable在指定的时间内会发出指定的事件。

.to.emitNext(eventName[, check])

.to.emitNext 用于断言当前的observable只发出一个指定事件,并且该事件是最后一个事件。

.to.emitSequence(eventsArray)

.to.emitSequence 用于断言当前的observable发出一系列的事件,和数组里的事件一一对应,如果不匹配则断言失败。

注:前面四个API的check参数传入的是一个check数组,check数组中的每个元素都是一个事件的判断回调, 也可以传不定参数的函数来判断check.

.to.emitNone()

.to.emitNone 用于断言当前的observable不会发出任何事件。

错误示例

上面的代码从返回结果看是通过的,但实际上这里有一个错误,如果触发了其他的事件,比如value,那么就会导致断言失败,正确的写法应该是:

-- -------------------- ---- -------
--------------- ----- ------ -------- -- -
  ----- --- - ----------------------- --- -- ----
  -----------------------------
  ---------- ---
  ---------- ---
  ---------- ---
  --------
  ---
---

总结

chai-kefir在流数据测试方面提供了一些很方便的API,更直观的语法和在一些特定场景下更优雅的使用方式,能够帮助我们更好地进行流数据的测试,让我们更加自信的面对大规模复杂的JavaScript工程。

除了chai-kefir外,还有很多其他测试工具可以用于流数据的测试,如RxJS marbles, Sinon and Samsa,可以根据业务场景选择适合的测试工具,以提高测试效率和质量。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedca4fb5cbfe1ea06123d2

纠错
反馈