diff --git a/packages/reactivity/__tests__/effect.spec.ts b/packages/reactivity/__tests__/effect.spec.ts index eb0e7f4b..758fedeb 100644 --- a/packages/reactivity/__tests__/effect.spec.ts +++ b/packages/reactivity/__tests__/effect.spec.ts @@ -570,7 +570,7 @@ describe('reactivity/effect', () => { }) it('events: onTrigger', () => { - let events: any[] = [] + let events: DebuggerEvent[] = [] let dummy const onTrigger = jest.fn((e: DebuggerEvent) => { events.push(e) diff --git a/packages/runtime-core/__tests__/apiInject.spec.ts b/packages/runtime-core/__tests__/apiInject.spec.ts index a5d09a4f..26359fe4 100644 --- a/packages/runtime-core/__tests__/apiInject.spec.ts +++ b/packages/runtime-core/__tests__/apiInject.spec.ts @@ -258,4 +258,29 @@ describe('api: provide/inject', () => { await nextTick() expect(serialize(root)).toBe(`
2
`) }) + + it('should warn unfound', () => { + const Provider = { + setup() { + return () => h(Middle) + } + } + + const Middle = { + render: () => h(Consumer) + } + + const Consumer = { + setup() { + const foo = inject('foo') + expect(foo).toBeUndefined() + return () => foo + } + } + + const root = nodeOps.createElement('div') + render(h(Provider), root) + expect(serialize(root)).toBe(`
`) + expect(`injection "foo" not found.`).toHaveBeenWarned() + }) }) diff --git a/packages/runtime-core/__tests__/apiWatch.spec.ts b/packages/runtime-core/__tests__/apiWatch.spec.ts index 579dbf8e..263864df 100644 --- a/packages/runtime-core/__tests__/apiWatch.spec.ts +++ b/packages/runtime-core/__tests__/apiWatch.spec.ts @@ -260,34 +260,35 @@ describe('api: watch', () => { nested: { count: ref(0) }, - array: [1, 2, 3] + array: [1, 2, 3], + map: new Map([['a', 1], ['b', 2]]) }) let dummy - let arr watch( () => state, state => { - dummy = state.nested.count - arr = state.array[2] + dummy = [state.nested.count, state.array[0], state.map.get('a')] }, { deep: true } ) await nextTick() - expect(dummy).toBe(0) - expect(arr).toBe(3) + expect(dummy).toEqual([0, 1, 1]) state.nested.count++ await nextTick() - expect(dummy).toBe(1) - expect(arr).toBe(3) + expect(dummy).toEqual([1, 1, 1]) // nested array mutation - state.array[2] = 4 + state.array[0] = 2 await nextTick() - expect(dummy).toBe(1) - expect(arr).toBe(4) + expect(dummy).toEqual([1, 2, 1]) + + // nested map mutation + state.map.set('a', 2) + await nextTick() + expect(dummy).toEqual([1, 2, 2]) }) it('lazy', async () => { diff --git a/packages/runtime-core/src/apiInject.ts b/packages/runtime-core/src/apiInject.ts index b9e105fe..7ba6ade7 100644 --- a/packages/runtime-core/src/apiInject.ts +++ b/packages/runtime-core/src/apiInject.ts @@ -35,7 +35,7 @@ export function inject(key: InjectionKey | string, defaultValue?: any) { } else if (defaultValue !== undefined) { return defaultValue } else if (__DEV__) { - warn(`injection ${key} not found.`) + warn(`injection "${key}" not found.`) } } } diff --git a/packages/runtime-core/src/warning.ts b/packages/runtime-core/src/warning.ts index 78a8981b..3553a408 100644 --- a/packages/runtime-core/src/warning.ts +++ b/packages/runtime-core/src/warning.ts @@ -1,3 +1,4 @@ export function warn(...args: any[]) { // TODO + console.warn(...args) }