4

我是测试新手,我正在尝试使用 Jest 伪造文档更新调用。为此,我使用了 react-native-testing-library 和 react-native-firebase。

下面是我的测试套件。我有一个输入,当我更改它的值时,应该更新文档

import firestore from "@react-native-firebase/firestore"

jest.mock("@react-native-firebase/firestore", () => {
        return () => ({
            collection: jest.fn(() => ({
                doc: jest.fn(() => ({
                    update: jest.fn(),
                })),
            })),
       });
 });

describe("<EditInfosStudy>", () => {
    const willSave = true;
    const setDidChanged = jest.fn();

    test("will update", async () => {
        const { getByTestId } = render(
            <EditInfosStudy willSave={willSave} setDidChanged={setDidChanged} />
        );

        const input = getByTestId("EditInfosStudy_TextInput");
        fireEvent.changeText(input, "study text");
        expect(input.props.value).toBe("study text");

       //  expect(firestore().collection('collection').doc('doc').update({})).toHaveBeenCalled() 
       //  this is where i'm stuck
    });
});

运行测试后,Jest 从函数(如下)中指示一个 console.log,以确认文档已更新并且测试通过。

我不明白的是如何使用 expect 方法检查文档是否在最后一行更新,expect(firestore()…) 我在整个模拟部分真的很困惑,任何帮助将不胜感激!

belove 是被调用的函数:

if (localChange && willSave) {
        (async () => {
            try {
                await firestore()
                    .collection("users")
                    .doc(user.uid)
                    .update({ study });
                setUser({ study });
                console.log("study updated");
            } catch (err) {
                console.error(err);
            }
        })();
    }
4

0 回答 0