eslint-plugin-chai-expect 封装 chai.expect 猪脚

阅读时长 4 分钟读完

前言

在前端开发中,我们经常要进行各种测试,而测试框架中最常用的是 Chai,它是一个 BDD / TDD 库,可以方便地编写断言和测试用例。其中 chai.expect() 方法是很常用的,但使用方法有些麻烦,需要引入 chai 库,而在 eslint 中使用时还需配置 eslint-plugin-chai-expect 插件,因此我们可以封装一个更方便使用的猪脚方法。

博客背景

知乎大神 @W-Tiger 在他的这篇博客中提到了 eslint-plugin-chai-expect,但仅仅是介绍了这个插件的用法和原理,并没有详细讲解如何封装猪脚方法。

猪脚方法

我们可以封装一个 chaiExpect 方法,该方法的作用和 chai.expect 一样,只是使用更方便、更简单。具体封装方法如下:

这个方法非常简单,我们导入 chai 模块,然后给模块中的 expect 方法取一个别名,最后返回 expect 方法即可。使用该方法也非常简单:

因为 chaiExpect 直接返回了 expect 方法,因此我们可以像普通使用 expect 一样使用它。

拓展功能

我们还可以拓展 chaiExpect 方法,使其支持更多的 chai 断言,以下为一个示例:

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

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

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

我们首先导入 chai-as-promised 模块,使用 chai.use 加载该模块,使 chaiExpect 可以使用 to.be.rejected 和 to.be.fulfilled 等异步断言。然后我们将 chaiExpect 作为返回值,并在该对象的基础上,再自定义一个 toBeContainedIn 方法,使其可以检查一个值是否存在于一个数组中。该方法的实现使用了 chaiExpect 自带的 satisfy 断言,并传入了一个匿名函数,该函数判断 item 是否存在于数组中。这样我们就可以在测试用例中愉快地使用该方法:

这是一个仅仅拓展了一个断言的示例,我们还可以通过类似的方式拓展更多更复杂的断言。

总结

eslint-plugin-chai-expect 提供了 ESLint 中引入 chai 断言的方便方式,而我们封装的猪脚方法则是在使用 chai.expect 时的进一步优化,使之更易用,更方便,也更加高效。当然,这些只是小小的探索,通过封装 chaiExpect,我们还可以进行更多的扩展,从而提升我们的测试效率和质量。

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

纠错
反馈