微信小程序實現了本身自動化,使用自動化,可以幫助更好的處理咱們的產品,更好的保證質量。咱們從頭開始學起,從api開始,會包含jest測試。web
自動化通常都是相輔相成的,移動化固然只能信賴測試部分,測試可以成功,咱們自動化纔有意義。小程序
單元測試的意義,保證咱們的每個單元保證本身是正常運轉的。咱們進行單元測試就對每個零件進行測試。後面能夠更好的實現自動化。一般會有測試塊,也被稱爲測試套件(describe), 固然還有最小的測試單元(it or test), 在 jest 總 it 和 test 是同樣的,只不過的別名而已,在測試 Matca 的 chai 斷言庫裏面,it 稱爲最小的測試用例單元。一個測試用例就是一個函數,一個測試套件也是一個函數。文件名通常改成 .test.js
(表示測試)和 .spec.js
(表示規格)文件。微信小程序
Mac:/Applications/wechatwebdevtools.app/Contents/MacOS/cli
Win:C:/Program Files (x86)/Tencent/微信web開發者工具/cli.bat
複製代碼
使用 Node.js 進行測試,miniprogram-automator 是小程序的自動化的 sdk, 通常配合 jest 進行測試。api
依賴模塊: miniprogram-automatorbash
<view class="test" bind:tap="testTap">hahah</view>
<youngui-button bind:getuserinfo="handleUserInfo"></youngui-button>
複製代碼
const automator = require('miniprogram-automator')
automator.launch({
cliPath: 'path/to/cli', // 工具 cli 位置,若是你沒有更改過默認安裝位置,能夠忽略此項
projectPath: 'path/to/project', // 項目文件地址
}).then(async miniProgram => {
const page = await miniProgram.reLaunch('/page/home/index')
await page.waitFor(500)
const element = await page.$('.kind-list-item-hd')
console.log(await element.attribute('.test'))
await element.tap()
await miniProgram.close()
}).catch((error) => {
console.error(error)
})
複製代碼
登陸咱們的小程序: launch 方法微信
beforeAll(() => console.log('1 - beforeAll'));
afterAll(() => console.log('1 - afterAll'));
beforeEach(() => console.log('1 - beforeEach'));
afterEach(() => console.log('1 - afterEach'));
test('', () => console.log('1 - test'));
describe('Scoped / Nested block', () => {
beforeAll(() => console.log('2 - beforeAll'));
afterAll(() => console.log('2 - afterAll'));
beforeEach(() => console.log('2 - beforeEach'));
afterEach(() => console.log('2 - afterEach'));
test('', () => console.log('2 - test'));
});
// 1 - beforeAll
// 1 - beforeEach
// 1 - test
// 1 - afterEach
// 2 - beforeAll
// 1 - beforeEach //特別注意,1 - beforeEach 會在test it 裏面都會調用,且優先於裏面的 beforeEach
// 2 - beforeEach
// 2 - test
// 2 - afterEach
// 1 - afterEach //特別注意,1 - afterEach 會在test it 裏面都會調用,且優先於裏面的 afterEach
// 2 - afterAll
// 1 - afterAll
複製代碼
beforeAll, afterAll 都只會指定都是隻執行一次的函數app
總結: 這其實就是做用域的問題,這些鉤子函數在不一樣的做用域的中執行狀況不同!async
Sort | api | 名字 | 參數 | 做用 |
---|---|---|---|---|
1 | test | 測試函數 | name, fn, timeout | 測試函數 |
2 | it | 測試函數 | name, fn, timeout | test的別名 |
2 | describe | 分做用域函數 | name, fn | 將測試分紅不一樣的做用域 |
2 | beforeAll | 全局前置鉤子函數 | name, timeout | 前置鉤子 |
2 | beforeEach | 前置鉤子函數 | name, timeout | 前置鉤子 |
2 | afterAll | 全局後置鉤子函數 | name, timeout | 前置鉤子 |
2 | afterEach | 後置鉤子函數 | name, timeout | 前置鉤子 |
.test.js
和 .spec.js
有什麼區別函數
jest 在 vscode 裏面能夠添加插件,添加了watch 以後每次更改 jest 的測試文件自動從新運行 jest 文件的內容,jest 的檢查到依賴的文件變化的時候,依然是在運行的階段,這樣的好是咱們能很好提升咱們的代碼質量,咱們不該在控制檯中不斷地調試 console 和 debugger,咱們應該學會寫測試用例,這纔是進階了一小步。沒有工做,在家裏提升本身,沒喲經濟來源,其餘的工做不想作,人生啊-_-,工具
咱們接觸的都是在頁面寫死的內容,咱們在頁面中的請求到了數據以後,如何測試,頁面的內容?? 咱們應該怎麼寫??
思路:先發請求,而後測試請求數據
咱們如何測翻頁功能??
在 miniProgram對象上,提供了 miniProgram.pageScrollTo 的行爲
分爲四大類: AutoMator、 MiniProgram、 Page、 Element
Sort | AutoMater | MiniProgram | Page | Element |
---|---|---|---|---|
1 | connect | pageStack | path | tagName |
2 | launch | navigateTo | query | $ |
3 | - | redirectTo | $ | $$ |
4 | - | reLaunch | $$ | size |
5 | - | switchTab | waitFor | offset |
6 | - | systemInfo | data | text |
7 | - | callWxMethod | setData | attribute |
8 | - | mockWxMethod | size | wxml |
9 | - | restoreWxMethod | scrollTop | outerWxml |
10 | - | evaluate | callMethod | value |
11 | - | pageScrollTo | style | |
12 | - | exposeFunction | tap | |
13 | - | remote | longpress | |
14 | - | disconnect | touchstart | |
15 | - | close | touchmove | |
16 | - | on-console | touchend | |
17 | - | on-execption | callMethod | |
18 | - | - | - | data |
19 | - | - | - | setData |
20 | - | - | - | trigger |