[ריאקט] זהירות! מידע גלובאלי בין בדיקות
נתבונן בקומפוננטה הבאה מתוך דף הפתיחה של swr:
import useSWR from 'swr'
function Profile () {
const { data, error, isLoading } = useSWR('/api/user/123', fetcher)
if (error) return <div>failed to load</div>
if (isLoading) return <div>loading...</div>
// render data
return <div>hello {data.name}!</div>
}
ונכתוב תוכנית בדיקה שמשנה את fetch כדי להחזיר אוביקט שלנו, בשביל שאפשר יהיה לבדוק את הקומפוננטה גם בלי לצאת לרשת:
import { render, screen } from '@testing-library/react';
import Profile from './Profile;
test('test one', async () => {
jest.spyOn(global, 'fetch').mockImplementation(url => Promise.resolve({
json: () => Promise.resolve({ name: 'bug'})
}));
render(<Profile />);
expect(await screen.findByText(/hello bug/));
});
קודם כל תשמחו לשמוע שהתוכנית עובדת. עכשיו קראו את הקוד שוב. רואים את הבעיה?