Cypress 是目前比较流行的前端自动化测试框架,提供了很多方便的 API 帮助我们编写自动化测试用例,但是它自带的断言库有一些局限性,比如无法直接支持异步测试,也无法使用 chai 的一些插件,因此我们需要使用其它断言库来扩展 Cypress 的能力。
安装其它断言库
Cypress 官方文档推荐使用 Chai.js 作为默认的断言库,但实际上我们完全可以使用其它的库,只需使用如下命令安装即可:
npm install --save-dev [library-name]
例如我们可以安装 expect.js:
npm install --save-dev expect.js
集成其它断言库
安装好其它断言库后,我们需要修改 Cypress 的 support/index.js 文件来集成这个库。在这个文件中,我们可以将断言库扩展到 Cypress 的命名空间上,使其在测试文件中可以通过 cy 命令使用。
import '@testing-library/cypress/add-commands';
// 导入断言库
import expect from 'expect.js';
Cypress.Commands.add('expect', expect);在这个文件中,我们使用了 Cypress 的命令添加机制将 expect.js 的 api 添加到 Cypress 命名空间中,这样在测试文件中就可以直接使用这些 api 了。
在测试中使用其它断言库
在测试文件中,我们可以使用添加的 cy.expect 命令实现常规的测试,并使用 Chai.js 的断言语法:
-- -------------------- ---- -------
------------ ------ -- -- -
---------- ---- ------- -- -- -
---------------------------------
-------------------------------- -------- ---------
---
---------- ---- ------- -- -- -
-------------------- -- -
--------------
---------------------- --
------------- -------
---
---
---------- ---- ---- ----------- -- -- -
---------------------------------
--------------------------- -- -
------------------------------------------- ---------
---
---
---在上面的测试代码中,我们先测试了常规的断言库,具体包括页面上是否含有 h1 元素以及是否包含特定文本。然后我们测试了一个异步测试用例,虽然 Cypress 原生的断言库无法直接支持异步测试,但是使用其它断言库可以很方便地解决这个问题。最后,我们测试了使用 expect.js 完成一个常规的有选择器的测试用例。
总结
使用其它断言库可以很好地扩展 Cypress 的能力,达到我们更多的测试需要。在选择其它断言库时,我们需要根据实际需求和个人喜好进行选择,只要符合规范和要求,都可以快速集成到 Cypress 中实现自动化测试。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/65b5c6d3add4f0e0ffe8519f