我如何检查在这个测试中是否使用Jest调用了signOut ?



我正试图在下一个应用程序中测试我的主页,但我在home中有一个按钮,调用注销firebase功能。我试过模拟这个函数并检查是否被调用,但没有成功。我怎样才能做得正确?

import { fireEvent, render, screen } from '@testing-library/react';
import Home from '../../pages/index';
jest.mock('firebase/app', () => {
return {
auth: () => {
return {
signOut: () => jest.fn(),
};
},
};
});
describe('Page: Home', () => {
it('render the page correctly', () => {
render(<Home />);
});
it('Sign out if signOut button is clicked', () => {
render(<Home />);
const logOutButton = screen.getByText('Sair');
fireEvent.click(logOutButton);
// TODO: Check if signOut was called
// expect().toHaveBeenCalled();
});
});

试试这个,看看是否有效:

import { fireEvent, render, screen } from '@testing-library/react';
import Home from '../../pages/index';
const signOutSpy = jest.fn()
jest.mock('firebase/app', () => {
return {
auth: () => {
return {
signOut: signOutSpy,
};
},
};
});
describe('Page: Home', () => {
it('render the page correctly', () => {
render(<Home />);
});
it('Sign out if signOut button is clicked', () => {
render(<Home />);
const logOutButton = screen.getByText('Sair');
fireEvent.click(logOutButton);
expect(signOutSpy).toHaveBeenCalled();
});
});

(请记住在测试之间重置/清除所有模拟)

最新更新