[READ-ONLY] Mirror of https://github.com/danielroe/nuxt-vitest. An vitest environment with support for testing code that needs a Nuxt runtime environment
nuxt nuxt-module testing unit-testing vitest
0

Configure Feed

Select the types of activity you want to include in your feed.

feat: expose `setupState` from `mountSuspended` (#399)

+29 -2
+20 -2
packages/vitest-environment-nuxt/src/runtime/mount.ts
··· 59 59 const { render, setup } = component as DefineComponent<any, any> 60 60 61 61 let setupContext: SetupContext 62 + let setupState: any 63 + 64 + const wrappedSetup = async ( 65 + props: Record<string, any>, 66 + setupContext: SetupContext 67 + ) => { 68 + if (setup) { 69 + setupState = await setup(props, setupContext) 70 + return setupState 71 + } 72 + } 73 + 62 74 return new Promise<ReturnType<typeof mount<T>>>(resolve => { 63 75 const vm = mount( 64 76 { ··· 72 84 render: (renderContext: any) => 73 85 h( 74 86 Suspense, 75 - { onResolve: () => nextTick().then(() => resolve(vm as any)) }, 87 + { 88 + onResolve: () => 89 + nextTick().then(() => { 90 + ;(vm as any).setupState = setupState 91 + resolve(vm as any) 92 + }), 93 + }, 76 94 { 77 95 default: () => 78 96 h({ ··· 95 113 : undefined, 96 114 setup: setup 97 115 ? (props: Record<string, any>) => 98 - setup(props, setupContext) 116 + wrappedSetup(props, setupContext) 99 117 : undefined, 100 118 } 101 119
+9
playground/tests/nuxt/mock-component-expose-setup-state.spec.ts
··· 1 + import { expect, it } from 'vitest' 2 + import { mountSuspended } from 'vitest-environment-nuxt/utils' 3 + import MockComponent from './mocks/MockComponent.vue' 4 + 5 + it('should expose setup state', async () => { 6 + const component = await mountSuspended(MockComponent) 7 + expect(component.setupState.counter.value).toBe(1) 8 + expect(component.setupState.doubled.value).toBe(2) 9 + })