testing-library / vue-testing-library

🦎 Simple and complete Vue.js testing utilities that encourage good testing practices.
http://testing-library.com/vue
MIT License
1.07k stars 111 forks source link

TypeError: Cannot read property '_isDestroyed' of undefined #257

Open K-Schaeffer-LOG opened 2 years ago

K-Schaeffer-LOG commented 2 years ago

Hello folks,

I'm having this error when rendering a component from a Storybook story. I think it might be something related to the vue constructor, since the error doesn't happen when commonly rendering this component. Also, the error doesn't happen with any other component rendered from the Storybook story, so I'm not sure why this is happening since I do not have any destroy() call or something like that.

The issue is that this is making my test fail, and I found out that here is a try-finally on the end of render.js, I thought of adding a catch block there, so the error continue to show on console but the test doesn't fail, like other errors that shows on test console.

What do you guys think about it?

To Reproduce Steps to reproduce the behavior:

I do not have a reproduction, the issue is a little bit specific.

Expected behavior

Is just an idea, but perhaps it should only show the error without failing the test.

Screenshots

Current behaviour: image

With catch block: image

Related information:

Relevant code or config (if any)

 function cleanupAtWrapper(wrapper) {
  if (wrapper.element.parentNode && wrapper.element.parentNode.parentNode === document.body) {
    document.body.removeChild(wrapper.element.parentNode);
  }

  try {
    wrapper.destroy();
  // Method with catch included
  } catch (error) {
    console.error(error)
  } finally {
    mountedWrappers["delete"](wrapper);
  }
}

Additional context

I'm using the testing-vue of storybook to render, so If you guys have any idea of what is missing on vue constructor to it recognize the isDestroyed I would appreciate.

afontcu commented 2 years ago

Hi! 👋 as you mentioned in the issue on testing-vue, it looks like this is an upstream issue originated there?

K-Schaeffer-LOG commented 2 years ago

Hi! wave as you mentioned in the issue on testing-vue, it looks like this is an upstream issue originated there?

Yes, It appears to me that it is originated there.

Regarding the catch block idea, I'm not sure if the lack of it is on purpose to make the test break with an unhandled exception. What do you think of It?

afontcu commented 2 years ago

Yeah, maybe we could improve something there… the reason to have a try/finally block is explained on this PR: https://github.com/testing-library/vue-testing-library/pull/142

if we can come up with a valid use case (in form of a current failing test) it would be great!

K-Schaeffer-LOG commented 2 years ago

I see, I don't remember having any other test failing and as I said, this one is probably something on testing-vue so It makes my case too specific... I'll wait for someone's reply there.