Open mrcanon opened 6 years ago
I think you didn't paste all the code, I don't see 'isLoading' anywhere.
In another note, you shouldn't be importing Vue in your tests, that's what createLocalVue is for
My two cents here. You should probably just create a simple mock of the library and pass it to the mocks
property of vue-test-utils.
A simple rule to follow is, what is not yours, dont test/mock it. This would mean we have to create a wrapper around the lib but lets be real here... we just assume it all works (as it should) and we create a simple mock. Otherwise you will have to install the plugin for the test too.
I think @dobromir-hristov's answer is the answer. Closing this issue.
In some cases, we cannot mock v-wait
. This library is widely used in our project and stubs/mocks prevent proper testability. For instance:
Component:
<v-wait for="loading">
<Spinner slot="waiting" />
<ul class="suggestions" v-if="suggestions">
<li v-for="...">Bleh</li>
</ul>
</v-wait>
Test:
it('shows suggestions', async () => {
const wrapper = shallowMount(SuggestionsComponent, { localVue });
expect(wrapper.find('.suggestions').exists()).toBe(true);
});
It is not possible to test proper ul
rendering without v-wait
component. You should:
const localVue = createLocalVue();
localVue.use(Vuex);
localVue.use(VueWait);
it('shows suggestions', async () => {
const wrapper = shallowMount(SuggestedAddresses, {
localVue,
wait: new VueWait()
});
expect(wrapper.find('.suggestions').exists()).toBe(true);
});
Hi @gabrielrobert, would you help to add a "testing" part into README.md file according to your testing experiences and problems? I need to improve vue-wait to make it more testable. It would be awesome for the people asking for tests (including me) :)
I would like to write a unit test with the async action such as: File navigation.spec.js: `
`File Navigation.vue: `
` **The result of test:** [Vue warn]: Error in config.errorHandler: "TypeError: Cannot read property 'isLoading' of undefined" Please help me to pass this issue. Thank you for any help you can offer