Cześć.
Piszę apkę z wykorzystaniem NextJs. Do testowania używam Jest, React Testing Library oraz Nock do mockowania requestów axiosa (samo użycie tej biblioteki nie jest przyczyną problemu). Utknąłem na testach, problem polega na tym, że chciałbym aby mocki resetowały się po każdym it(), ale tak się nie dzieje i w drugim teście nadal jest zwracany json z pierwszego testu.
describe('Contacts component', () => {
beforeEach(() => {
nock.disableNetConnect();
nock(BACKEND_URL).defaultReplyHeaders(nockReplyHeaders).options('/api/user').reply(200);
nock(BACKEND_URL).defaultReplyHeaders(nockReplyHeaders).get('/api/user').reply(200, RootUserJson);
});
afterEach(() => {
// tutaj resetuje mocki
nock.cleanAll();
nock.restore();
});
it('loads first contacts list', async () => {
// tutaj prawidłowo mocki zwracają listę kontaktów
nock(BACKEND_URL)
.defaultReplyHeaders(nockReplyHeaders)
.options(`/api/friendship/friends/${RootUserJson.id}?page=1`)
.reply(200);
nock(BACKEND_URL)
.defaultReplyHeaders(nockReplyHeaders)
.get(`/api/friendship/friends/${RootUserJson.id}?page=1`)
.reply(200, ContactsFirstPageJson);
render(
<Provider store={store}>
<Contacts />,
</Provider>,
);
// expecty...
});
it('loads empty list and show empty component', async () => {
// te mocki dalej zwracają listę kontaktów zamiast pustej listy
nock(BACKEND_URL)
.defaultReplyHeaders(nockReplyHeaders)
.options(`/api/friendship/friends/${RootUserJson.id}?page=1`)
.reply(200);
nock(BACKEND_URL)
.defaultReplyHeaders(nockReplyHeaders)
.get(`/api/friendship/friends/${RootUserJson.id}?page=1`)
.reply(200, EmptyJson);
render(
<Provider store={store}>
<Contacts />
</Provider>,
);
const emptyComponent = await screen.findByText('No contacts, add some friends');
expect(emptyComponent).toBeInTheDocument();
});
});
Proszę o pomoc.