Can't mock firestore via firebase-admin
Description
Struggling to get a test passing
Steps to reproduce
const { mockFirebase } = require("firestore-jest-mock");
mockFirebase({
database: {
users: [
{ id: "abc123", name: "Homer Simpson" },
{ id: "abc456", name: "Lisa Simpson" },
],
posts: [{ id: "123abc", title: "Really cool title" }],
},
});
const { mockCollection } = require("firestore-jest-mock/mocks/firestore");
test("testing stuff", () => {
const admin = require("firebase-admin"); // or import firebase from 'firebase';
admin.initializeApp();
const db = admin.firestore();
return db
.collection("users")
.get()
.then((userDocs) => {
console.log(userDocs);
expect(mockCollection).toHaveBeenCalledWith("users");
expect(userDocs.docs[0].data().name).toEqual("Homer Simpson");
});
});
Expected result
Test pass
Actual result
Fails, firestore not mocked
Environment
- Node version:
same here..watching
any updates here?
Are you all calling mockFirebase outside of a describe block? i.e. is it at the top of the file before your tests are written? The hoisting in jest is weird and it requires that mockFirebase be in a describe block that wraps your tests. See the examples in our repo:
https://github.com/Upstatement/firestore-jest-mock/blob/master/tests/auth.test.js#L16-L17
If you have an example repo you can point me to, I'm happy to play around
Hi, sorry for jumping onto that thread like that but you touched on a certain problem im having @sbatson5 with the comment. Can I have multiple "mockFirebase" instances per file im testing in, due to having multiple "describe" blocks? Very often i noticed that the "mockFirebase" conflict with each other even in between of the describes. Mind you, that im using es6 with node 16 which apparently stil doesnt have full support for some mocks and clears in jest annoyingly.
Hi, sorry for jumping onto that thread like that but you touched on a certain problem im having @sbatson5 with the comment. Can I have multiple "mockFirebase" instances per file im testing in, due to having multiple "describe" blocks? Very often i noticed that the "mockFirebase" conflict with each other even in between of the describes. Mind you, that im using es6 with node 16 which apparently stil doesnt have full support for some mocks and clears in jest annoyingly.
@jdziek Hmm, yeah I would assume that would work but I've also had issues on the latest node and clearing mocks but haven't had time to dig into it. Honestly, jest's hoisting and inconsistent clearing has been one of the biggest headaches for writing such a large mock class, to the point where I just started writing more but smaller test files