如果想從頭學起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- Cypress 底層依賴於很多優秀的開源測試框架,其中就有 Mocha
- Mocha 是一個適用於 Node.js 和瀏覽器的測試框架,它使得異步測試變得簡單
JS 語言帶來的問題
JS 是單線程異步執行的,這使得測試變得復雜,因為無法像測試同步執行的代碼那樣,直接判斷函數的返回值是否符合預期(因為給函數賦值時函數可能並未執行)
如何驗證異步函數的正確性
- 需要測試框架支持回調,Promise 或者其他方式來驗證異步函數的正確性
- Mocha 提供了出色的異步支持包括 Promise ,從而使得異步測試變得簡單
Cypress 結合 Mocha
Cypress 繼承並擴展了 Mocha 對異步的支持
Mocha 提供了什么
- 多種接口來定義測試套件,Hooks,單個測試( Individual )
- BDD(Behavior-Driven Development,行為驅動開發)
- TDD(Test-Driven Development,測試驅動開發)
- Exports、QUnit、Require
Cypress 采納了 Mocha 的 BDD 語法
- 該語法非常適合集成測試和單元測試
- 在 Mocha 中,一個 BDD 風格的測試用例看起來是這樣的
常見 Mocha 模塊
Cypress 將 Mocha 硬編碼在自己的框架中,所以編寫測試用例都是基於 Mocha 提供的如下基本功能模塊:
- describe()
- context()
- it()
- before()
- beforeEach()
- afterEach()
- after()
- .only()
- .skip()
對於一條可執行的測試用例來說,有以下兩個必要的組成部分
describe()
- 代表測試套件,里面可以設定 context() ,也可以包括多個測試用例 it() ,還能嵌套子測試套件
- 一個測試套件可以不包括任何鈎子函數(Hook),但必須包含至少一條測試用例 it()
it()
代表一條測試用例
其他模塊
- 除上述兩個功能模塊外,其他功能模塊對於一條可執行的測試來說,都是可選的
- 例如 context() 是 describe() 的別名,其行為方式是一致的,直接用 context() 代替 describe() 也是可以的哦
可以看到,一共有三層的 context() ;
運行成功看看下面的結果