codesandbox / codesandbox/codesandbox-client
CRA - different test behaviour
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 13.6k
- Forks
- 2.4k
- Avg merge
- 6d 19h
- Merged PRs (30d)
- 2
Description
🐛 bug report
Preflight Checklist
- I have read the
Contributing Guidelines
for this project. - I agree to follow the
Code of Conduct
that this project adheres to. - I have searched the issue tracker for an issue that matches the one I want
to file, without success.
Description of the problem
I've been coding with CRA locally. After copy-pasting the code to codesandbox, I've encountered different test behaviour.
- Mocking
window.fetchdoes not work (the call is not mocked). MockingglobalThis.fetchworks, but causes an error. Locally, mockingwindow.fetchdoes work useEffectruns twice in the tests (probably due to strict mode?). For instance, if I have auseEffect(() => fetch(), [])theexpect(fetch).toBeCalledTimes(2)will return true, while locally is not the case.
How has this issue affected you? What are you trying to accomplish?
It is frustrating that there are environment differences and that you can't control how tests are being run in codesandbox.
To Reproduce
In my provided sandbox, you can see the following observations:
jest.spyOn(window, 'fetch')orjest.spyOn(global, 'fetch')does not mock thefetch()call inApp.jsxexpect(fetchMock).toBeCalledTimes(1);assertion fails
Link to sandbox: link (optional)
Your Environment
| Software | Name/Version |
|---|---|
| Сodesandbox | |
| Browser | Chrome |
| Operating System | Mac OS X 10.15.7 |
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked sandbox's src/App.jsx and src/App.test.js, focusing on the fetch mocks and the useEffect call count described in the report. Compare the sandbox test behavior with CRA's local behavior; done means fetch mocking works consistently and the effect is invoked the expected number of times.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, react
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100