vire / jest-vue-preprocessor

Preprocessor that allows importing of .vue files in jest tests
MIT License
130 stars 27 forks source link

Can't Handle Functional Components #49

Open candyapplecorn opened 6 years ago

candyapplecorn commented 6 years ago

I'm submitting a ... (check one with "x")

[ x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request

Current behavior functional components error out with error ‘No script available to transform’.

Expected behavior Should not try to read a script tag from a functional component since they don't have script tags

Minimal reproduction of the problem with instructions

Try to test a functional component with jest.

What is the motivation / use case for changing the behavior? My build system won't let me push my code because these functional components are failing tests

Please tell us about your environment: node version 8.9.4 latest jest and related utils, max osx

ronald-d-rogers commented 6 years ago

We're having the same issue with single page components that do not have script tags.

TakahiRoyte commented 6 years ago

@ronald-d-rogers I faced the same problem when I was integrating tests on the project based on nuxt-community/starter-template, where AppLogo.vue does not have <script></script>.

Adding empty <script></script> was needed to avoid this error.

ddosdor commented 6 years ago

@TakahiRoyte unfortunately, it did not help me :( When I add empty <string></string>, it receives an error:

  ● Test suite failed to run

    TypeError: Path must be a string. Received undefined

      at extractScriptContent (node_modules/jest-vue-preprocessor/index.js:34:43)
      at Object.process (node_modules/jest-vue-preprocessor/index.js:63:21)
gangsthub commented 6 years ago

Solved by @TakahiRoyte's solution. Remember that is needed in every component, even children components.

daltojohnso commented 6 years ago

@ddosdor -- in case you haven't yet found a solution, adding export default {}; to my empty script tag fixed that error.

ewmiller commented 6 years ago

Confirmed, this fixed it for me:

<script>
export default {};
</script>

Thank you @TakahiRoyte and @daltojohnso!