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

3 4
describe('watchPostEffect', () => {
	const isSafari = process.env.uniTestPlatformInfo.indexOf('safari') > -1
雪洛's avatar
雪洛 已提交
5
  const isWeb = process.env.uniTestPlatformInfo.startsWith('web')
雪洛's avatar
雪洛 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
  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
雪洛 已提交
28 29 30
    // TODO web端自动化测试text方法应使用textContent获取内容来保留空格,目前text方法未保留首尾空格
    expect(await watchCountCleanupRes.text()).toBe(isWeb ? 'watch count cleanup result:' :
      'watch count cleanup result: ')
雪洛's avatar
雪洛 已提交
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 81

    // 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')
82
    expect(await objArr.text()).toBe(isSafari ? 'obj.arr: [ 0]' : 'obj.arr: [0]')
雪洛's avatar
雪洛 已提交
83 84

    const watchObjRes = await page.$('#watch-obj-res')
雪洛's avatar
雪洛 已提交
85
    // TODO web端和安卓端JSON.stringify对属性的排序不一致
雪洛's avatar
雪洛 已提交
86
    expect(await watchObjRes.text()).toBe(
雪洛's avatar
雪洛 已提交
87 88 89 90
      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
雪洛 已提交
91 92 93 94 95 96 97 98 99 100 101 102
    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')
103
    expect(await objArr.text()).toBe(isSafari ? 'obj.arr: [ 0, 1]' : 'obj.arr: [0,1]')
雪洛's avatar
雪洛 已提交
104 105

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

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