I can't access any variables defined outside the jest.mock.
I would like to mock the auth functionality, with different return values for each tests.
// Initialize Firebase
const app = initializeApp(firebaseConfig)
export const auth = () => getAuth(app)
I have tried many ways.
The following way works, but I can't override the mock for auth for each tests
// firebase config mock
jest.mock('../../config/firebase', () => {
const module = jest.requireActual('../../config/firebase')
const mockAuth = { currentUser: 'string' }
return {
__esModule: true, // Use it when dealing with esModules
auth: jest.fn().mockReturnValue({ currentUser: 'string' })
}
})
I would like it to work as following
// firebase config mock
let mockAuthValue = jest.fn().mockResolvedValue({ currentUser: 'string' })
jest.mock('../../config/firebase', () => {
const module = jest.requireActual('../../config/firebase')
const mockAuth = { currentUser: 'string' }
return {
__esModule: true, // Use it when dealing with esModules
auth: () => mockAuthValue()
}
})
or may like..
// firebase config mock
let mockAuthValue = { currentUser: 'string' }
jest.mock('../../config/firebase', () => {
const module = jest.requireActual('../../config/firebase')
const mockAuth = { currentUser: 'string' }
return {
__esModule: true, // Use it when dealing with esModules
auth: () => jest.fn().mockResolvedValue(mockAuthValue)
}
})