Closed
Description
Describe the bug A clear and concise description of what the bug is.
Try to call render()
on a component define with defineComponent({...})
.
This error is reported by typescript :
Argument of type 'DefineComponent<{}, {}, any, Record<string, ComputedGetter<any> | WritableComputedOptions<any>>, MethodOptions, ... 6 more ..., {}>' is not assignable to parameter of type 'VueClass<any>'.
Type 'ComponentPublicInstanceConstructor<any, any, any, any, Record<string, ComputedGetter<any> | WritableComputedOptions<any>>, MethodOptions> & ComponentOptionsBase<...> & VNodeProps & AllowedComponentProps & ComponentCustomProps' is missing the following properties from type 'VueConstructor<Vue>': extend, nextTick, set, delete, and 9 more.ts(2345)
To Reproduce Steps to reproduce the behavior:
- Create a project from the vue-cli ( typescript + unit test with jest)
- convert the generate test to :
const msg = 'new message'
render(HelloWorld, {
props: { msg },
})
const elt = await screen.findByText(msg)
expect(elt).toBeDefined()
Expected behavior
No TS error
Screenshots
Related information:
@testing-library/vue
version: 6.0.0Vue
version: 3.0
Relevant code or config (if any)
To throw away the error I did a shim for vue-testing--library in my project. I am not a TS expect so i do not kwnow if it is a correct shim
// src/shims-vue-testing-library.d.ts
import { ConfigurationCallback, RenderOptions } from '@testing-library/vue'
import Vue, { DefineComponent } from 'vue'
declare module '@testing-library/vue' {
export function render<V extends Vue>(
TestComponent: DefineComponent<{}, {}, any> | VueClass<V>,
options?: RenderOptions<V>,
configure?: ConfigurationCallback<V>,
): ComponentHarness
}
Thank you for this great wrapper.
I read some issues that worry me about the routing.
Can I easily use a real router with vue-testing-library ?
Sadly VTU seems to focus on the mock path :/