У меня есть следующий компонент:
import React from "react";
import Firebase from "../../Firebase";
const SignOutButton = () => (
<button type="button" onClick={() => Firebase.auth().signOut()}>
Sign Out
</button>
);
export default SignOutButton;
Я хочу проверить, что Firebase.auth().signOut
называется onClick
.
Я нашел этот макет Firebase.auth
в другом месте:
const authMock = jest.fn(() => {
return {
createUserAndRetrieveDataWithEmailAndPassword: jest.fn(() =>
Promise.resolve(true)
),
sendPasswordResetEmail: jest.fn(() => Promise.resolve(true)),
signInAndRetrieveDataWithEmailAndPassword: jest.fn(() =>
Promise.resolve(true)
),
fetchSignInMethodsForEmail: jest.fn(() => Promise.resolve(true)),
signOut: jest.fn(() => {
Promise.resolve(true);
}),
onAuthStateChanged: jest.fn(),
currentUser: {
sendEmailVerification: jest.fn(() => Promise.resolve(true))
}
};
});
export { authMock };
В SignOutButton.test у меня есть:
import React from "react";
import { render, cleanup, fireEvent } from "@testing-library/react";
import SignOutButton from "../.";
import Firebase from "../../../Firebase";
import { authMock } from "../../../../setupTests";
// @ts-ignore
Firebase.auth = authMock;
describe("<SignOutButton />", () => {
afterEach(cleanup);
it("calls Firebase signOut on click", async () => {
const { getByText } = render(<SignOutButton />);
const button = getByText("Sign Out");
fireEvent.click(button);
expect(Firebase.auth().signOut).toHaveBeenCalled();
});
});
В результате моего теста ожидаемые вызовы равны 1, но я получаю 0.
Что я делаю не так?
Спасибо!