watch-effect.test.js 5.9 KB
Newer Older
DCloud-WZF's avatar
DCloud-WZF 已提交
1 2
const PAGE_PATH = '/pages/composition-api/reactivity/watch-effect/watch-effect'

DCloud-WZF's avatar
DCloud-WZF 已提交
3
describe('watchEffect', () => {
4 5 6 7 8 9 10 11 12 13 14
  let page = null
  beforeAll(async () => {
    page = await program.reLaunch(PAGE_PATH)
    await page.waitFor('view')
  })
  it('count', async () => {
    const count = await page.$('#count')
    expect(await count.text()).toBe('count: 0')

    // watch
    const watchCountRes = await page.$('#watch-count-res')
15 16
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 0, count ref text (flush sync): count: 0')
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
    // track
    const watchCountTrackNum = await page.$('#watch-count-track-num')
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')

    // trigger
    const watchCountTriggerNum = await page.$('#watch-count-trigger-num')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 1')
    const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 0')

    // watch count and obj.num
    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 0, obj.num: 0')

    const incrementBtn = await page.$('.increment-btn')
    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 1')
35 36
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 1, count ref text (flush sync): count: 0')
37 38 39
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')
DCloud-WZF's avatar
DCloud-WZF 已提交
40

41
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 1, obj.num: 0')
DCloud-WZF's avatar
DCloud-WZF 已提交
42

43
    await incrementBtn.tap()
DCloud-WZF's avatar
DCloud-WZF 已提交
44

45
    expect(await count.text()).toBe('count: 2')
46 47 48
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text (flush sync): count: 1')

49 50 51
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 3')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')
DCloud-WZF's avatar
DCloud-WZF 已提交
52

53
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')
DCloud-WZF's avatar
DCloud-WZF 已提交
54

55 56 57
    // stop watch
    const stopWatchCountBtn = await page.$('.stop-watch-count-btn')
    await stopWatchCountBtn.tap()
DCloud-WZF's avatar
DCloud-WZF 已提交
58

59
    await incrementBtn.tap()
DCloud-WZF's avatar
DCloud-WZF 已提交
60

61
    expect(await count.text()).toBe('count: 3')
62 63 64
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text (flush sync): count: 1')

65 66 67 68 69 70 71 72 73 74 75 76 77 78
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 3')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 0')
  })
  it('obj', async () => {
    const objStr = await page.$('#obj-str')
    expect(await objStr.text()).toBe('obj.str: num: 0')
    const objNum = await page.$('#obj-num')
    expect(await objNum.text()).toBe('obj.num: 0')
    const objBool = await page.$('#obj-bool')
    expect(await objBool.text()).toBe('obj.bool: false')
    const objArr = await page.$('#obj-arr')
DCloud-WZF's avatar
DCloud-WZF 已提交
79
    expect(await objArr.text()).toBe('obj.arr: [0]')
80 81 82

    const watchObjRes = await page.$('#watch-obj-res')
    if (process.env.uniTestPlatformInfo.startsWith('android')) {
DCloud-WZF's avatar
DCloud-WZF 已提交
83 84
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
85 86 87 88 89 90
    }
    if (process.env.uniTestPlatformInfo.startsWith('web')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":0,"str":"num: 0","bool":false,"arr":[0]}')
    }
    const watchObjStrRes = await page.$('#watch-obj-str-res')
91 92 93
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 0, obj.str ref text (flush pre): obj.str: num: 0')

94
    const watchObjBoolRes = await page.$('#watch-obj-bool-res')
95 96 97
    expect(await watchObjBoolRes.text()).toBe(
      'watch obj.bool result: bool: false, obj.bool ref text (flush post): obj.bool: false')

98 99
    const watchObjArrRes = await page.$('#watch-obj-arr-res')
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')
DCloud-WZF's avatar
DCloud-WZF 已提交
100

101 102
    const updateObjBtn = await page.$('.update-obj-btn')
    await updateObjBtn.tap()
DCloud-WZF's avatar
DCloud-WZF 已提交
103

104 105 106
    expect(await objStr.text()).toBe('obj.str: num: 1')
    expect(await objNum.text()).toBe('obj.num: 1')
    expect(await objBool.text()).toBe('obj.bool: true')
DCloud-WZF's avatar
DCloud-WZF 已提交
107
    expect(await objArr.text()).toBe('obj.arr: [0,1]')
DCloud-WZF's avatar
DCloud-WZF 已提交
108

109
    if (process.env.uniTestPlatformInfo.startsWith('android')) {
DCloud-WZF's avatar
DCloud-WZF 已提交
110 111
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
112 113 114 115 116
    }
    if (process.env.uniTestPlatformInfo.startsWith('web')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}')
    }
DCloud-WZF's avatar
DCloud-WZF 已提交
117 118
      expect(await watchObjStrRes.text()).toBe(
        'watch obj.str result: str: num: 1, obj.str ref text (flush pre): obj.str: num: 0')
119 120 121
    expect(await watchObjBoolRes.text()).toBe(
      'watch obj.bool result: bool: true, obj.bool ref text (flush post): obj.bool: true')

122 123 124 125 126
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0,1]')

    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 1')
  })
DCloud-WZF's avatar
DCloud-WZF 已提交
127
})