В моем реактивном компоненте по умолчанию для загрузки установлено значение true, а затем выборка, которая при возврате устанавливает загрузку в false. Когда я возвращаю свой jsx-код, у меня есть проверка, подобная {! loading &&
, которая работает, но в моем тесте выборка проверяется и вызывается, но сначала она вызывает render, поэтому она не отображает компоненты.
test('App component renders and contains prop given to it', async () => {
jest.spyOn(window, 'fetch').mockResolvedValue({
json: jest.fn().mockResolvedValue({ value: 'test' }) as Partial<Response>,
} as Response);
await act(async () => {
const testProp = 'my test';
const { container, getByText } = render(<App testProp={testProp} />);
const testPropElement = getByText(testProp);
console.log('test2');
expect(testPropElement).toBeInTheDocument();
});
});
Выборка выглядит примерно так:
fetch(`/api/url`)
.then((response) => response.json())
.then((data) => {
console.log('test1');
setLoading(false);
});
Когда я консольный журнал, чтобы увидеть порядок вещей, он определенно проходит через mockResolvedValue и показывает 'test1' после 'test2'.
У кого-нибудь есть идеи? спасибо за помощь.