test(reactive): use vitest fn instead of counting manually (#11746)

This commit is contained in:
Maisha Tremblay 2024-09-02 17:08:19 +08:00 committed by GitHub
parent 0387e1b906
commit 3de5556521
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 9 deletions

View File

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