我是测试新手,我正在尝试使用 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);
}
})();
}