watch-post-effect.test.js 5.4 KB
Newer Older
1 2 3
const PAGE_PATH = '/pages/composition-api/reactivity/watch-post-effect/watch-post-effect'

describe('watchPostEffect', () => {
雪洛's avatar
雪洛 已提交
4
  const isWeb = process.env.uniTestPlatformInfo.startsWith('web')
雪洛's avatar
雪洛 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
  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')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 0, count ref text: count: 0')

    // 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: 0')
    const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
雪洛's avatar
雪洛 已提交
27 28 29
    // TODO web端自动化测试text方法应使用textContent获取内容来保留空格,目前text方法未保留首尾空格
    expect(await watchCountCleanupRes.text()).toBe(isWeb ? 'watch count cleanup result:' :
      'watch count cleanup result: ')
雪洛's avatar
雪洛 已提交
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

    // 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')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 1, count ref text: count: 1')
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 1')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 1, obj.num: 0')

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 2')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text: count: 2')
    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: 2')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')

    // stop watch
    const stopWatchCountBtn = await page.$('#stop-watch-count-btn')
    await stopWatchCountBtn.tap()

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 3')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text: count: 2')
    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: 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 已提交
81
    expect(await objArr.text()).toBe('obj.arr: [0]')
雪洛's avatar
雪洛 已提交
82 83

    const watchObjRes = await page.$('#watch-obj-res')
雪洛's avatar
雪洛 已提交
84
    // TODO web端和安卓端JSON.stringify对属性的排序不一致
雪洛's avatar
雪洛 已提交
85
    expect(await watchObjRes.text()).toBe(
雪洛's avatar
雪洛 已提交
86 87 88 89
      isWeb ?
      'watch obj result: obj: {"num":0,"str":"num: 0","bool":false,"arr":[0]}' :
      'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
    )
雪洛's avatar
雪洛 已提交
90 91 92 93 94 95 96 97 98 99 100 101
    const watchObjStrRes = await page.$('#watch-obj-str-res')
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 0, obj.str ref text: obj.str: num: 0')
    const watchObjArrRes = await page.$('#watch-obj-arr-res')
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')

    const updateObjBtn = await page.$('#update-obj-btn')
    await updateObjBtn.tap()

    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 已提交
102
    expect(await objArr.text()).toBe('obj.arr: [0,1]')
雪洛's avatar
雪洛 已提交
103 104

    expect(await watchObjRes.text()).toBe(
雪洛's avatar
雪洛 已提交
105
      isWeb ?
DCloud-WZF's avatar
DCloud-WZF 已提交
106
      'watch obj result: obj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}' :
雪洛's avatar
雪洛 已提交
107 108
      'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
    )
雪洛's avatar
雪洛 已提交
109 110
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 1, obj.str ref text: obj.str: num: 1')
DCloud-WZF's avatar
DCloud-WZF 已提交
111
    expect(await watchObjArrRes.text()).toBe(
雪洛's avatar
雪洛 已提交
112
      'watch obj.arr result: arr: [0,1]')
雪洛's avatar
雪洛 已提交
113 114 115 116

    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')
  })
117
})