query icon indicating copy to clipboard operation
query copied to clipboard

React Native[Testing]: Queries are stuck in loading

Open tarikfp opened this issue 3 years ago • 7 comments

Describe the bug

Hey!👋 I wanted to implement offline support to my current react-native app, thus upgraded react-query to ^4.0.0-beta.14. However, I've noticed that useQuery hooks are not returning any data when testing, they are stuck in loading state...

When I downgrade the react-query back to 3.39.1 everything works as expected again!

Your minimal, reproducible example

reproducible example

Steps to reproduce

Expected behavior

useQuery hook should stuck in loading state when testing in ^4.0.0-beta.14

How often does this bug happen?

Every time

Screenshots or Videos

No response

Platform

  • React Native

react-query version

^4.0.0-beta.14

TypeScript version

^4.0.5

Additional context

No response

tarikfp avatar Jun 09 '22 14:06 tarikfp

you need to provide more information please. we have a react native example in the docs that you can fork for a minimal reproduction, thanks.

TkDodo avatar Jun 09 '22 14:06 TkDodo

you need to provide more information please. we have a react native example in the docs that you can fork for a minimal reproduction, thanks.

Hi there, thanks for the quick response. I created a minimal repo.

tarikfp avatar Jun 09 '22 15:06 tarikfp

Thanks. I don't really know how to run tests in expo snack 🤔 ? But I have updated my testing-react-query repository to work with v4, and it works fine. Have a look:

  • https://github.com/TkDodo/testing-react-query/blob/5e4dc865391038eadb8c62d6abdcdba36280be32/src/tests/hooks.test.tsx#L9-L17

Note that I also removed react-hooks-testing-library, as its going to be deprecated soon:

  • https://github.com/testing-library/react-hooks-testing-library/issues/849

renderHook now exists in react-testing-library, and I've just used that. API is a bit different because waitFor needs a Promise, not a boolean returned, but that's a small adaption. It seems that react-native-testing-library also has a renderHook method - maybe that would be worth a try?

TkDodo avatar Jun 09 '22 19:06 TkDodo

Thanks for replying. I am afraid that renderHook in RNTL has not been released yet.

I am guessing/assuming that you did not encounter the error as it was a react project, not a react-native.

On the other hand, I also did try renderHook from @testing-library/react whereas it requires having installed react-dom package.

Below is the error when trying test renderHook from @testing-library/react.

Test suite failed to run

    Cannot find module 'react-dom/test-utils' from 'node_modules/@testing-library/react/dist/act-compat.js'

Installing react-dom package to react-native will cause further errors such as shown below. (Obviously an expected error...)

The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/en/configuration#testenvironment-string.
    Consider using the "jsdom" test environment.
    
    ReferenceError: document is not defined

I guess waiting for RNTL to release renderHook in their API seems the only solution. Nevertheless, I really would love to see a working example with react-native project but not react. Perhaps, I might be misconfiguring/missing stuff somehow :)

tarikfp avatar Jun 10 '22 18:06 tarikfp

Can you tell me how i can run the test in expo snack? Then i can play around with it

TkDodo avatar Jun 10 '22 19:06 TkDodo

Unfortunately, I also do not have also information regarding running tests on expo snack. I have created a minimal react native app for this purpose.

tarikfp avatar Jun 10 '22 20:06 tarikfp

@tarikpnr same boat here, using react-native with testing-library/react-native and their new renderHook doesn't operate the same way as all of the other implementations. I have no issue getting the tests to pass with testing-library/react or with testing-library/react-hooks. I'm going to try to open something on their repo to address this since https://github.com/testing-library/react-hooks-testing-library is going to be deprecated

edit: https://github.com/callstack/react-native-testing-library/issues/1030

kylebake avatar Aug 01 '22 20:08 kylebake

I'm going to close this as an upstream issue with react-native-testing-library as shown here

  • https://github.com/callstack/react-native-testing-library/issues/1030

feel free to re-open if there is something we can do on react-query side

TkDodo avatar Aug 12 '22 15:08 TkDodo