Pārlūkot izejas kodu

test(reactivity): test case for #6358 (#6376)

lidlanca 1 gadu atpakaļ
vecāks
revīzija
1d988b5b99
1 mainītis faili ar 26 papildinājumiem un 0 dzēšanām
  1. 26 0
      packages/reactivity/__tests__/ref.spec.ts

+ 26 - 0
packages/reactivity/__tests__/ref.spec.ts

@@ -43,6 +43,32 @@ describe('reactivity/ref', () => {
     expect(fn).toHaveBeenCalledTimes(2)
   })
 
+  it('ref wrapped in reactive should not track internal _value access', () => {
+    const a = ref(1)
+    const b = reactive(a)
+    let calls = 0
+    let dummy
+
+    effect(() => {
+      calls++
+      dummy = b.value // this will observe both b.value and a.value access
+    })
+    expect(calls).toBe(1)
+    expect(dummy).toBe(1)
+
+    // mutating a.value should only trigger effect once
+    calls = 0
+    a.value = 3
+    expect(calls).toBe(1)
+    expect(dummy).toBe(3)
+
+    // mutating b.value should trigger the effect twice. (once for a.value change and once for b.value change)
+    calls = 0
+    b.value = 5
+    expect(calls).toBe(2)
+    expect(dummy).toBe(5)
+  })
+
   it('should make nested properties reactive', () => {
     const a = ref({
       count: 1,