-
-
Notifications
You must be signed in to change notification settings - Fork 518
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
React Native: server.use does not add request handlers #2042
Comments
In the failing test can you try to await 0ms timeout? I am having same issue in react app and wondering if this is something similar, for me doing await for 0ms worked: export const wait = (ms: number) => {
return new Promise((resolve) => setTimeout(resolve, ms));
}; it('shows error if api failed', async () => {
server.use(
http.get('/donation-settings', () => {
return HttpResponse.json({}, { status: 404 });
}),
);
await wait(0);
const contentText = 'Content';
render(
<Container>
{({ currentSettings }) => (
<div>
{contentText}
{JSON.stringify(currentSettings)}
</div>
)}
</Container>,
);
const error = await screen.findByTestId('error');
const content = screen.queryByText(contentText);
expect(error).toBeVisible();
expect(content).not.toBeInTheDocument();
}); without waiting it fails |
The await doesn't help me in the RN app described by @RayOei |
@RayOei @andrew-tv Did either of you manage to find a workaround for this? I'm also seeing the same behaviour with the latest versions of MSW + Detox with a React Native app. Initial handlers work just fine but attempting to add handlers as part of a test seem to be ignored. |
Prerequisites
Environment check
msw
versionNode.js version
21.6.2
Reproduction repository
https://github.com/RayOei/MSW-test/tree/main
Reproduction steps
The repo contains a simple RN app (RN v0.73.4) with Detox (v20.18.1) tests which illustrates the expectations.
For details see the README.md in the repo.
Edit: some additional observations have been added regarding handling of intercepted requests. Also the demo app has been tweaked to help show more clearly what the behaviour is
Current behavior
The first test using the global handler passes: request is intercepted and expected response is send & received.
The test which defines the
server.use
fails, however, as the normal handler is executed instead of this particular one.Logging show the intercept log:
Edit:
I noticed that the listHandlers() does show an added
HttpHandler
but it is not used (or skipped)?Before the
----
the predefined set. After the set including the HttpHandler added byserver.use
.Expected behavior
Expected that [Refresh -> should have Use_Movie_fake_4 last => THIS ONE FAILS] test would pass with request intercepted with the
server.use
as defined in the test with the appropriate response. This followed the information provided in https://mswjs.io/docs/best-practices/structuring-handlersThe text was updated successfully, but these errors were encountered: