我试图从npm库@react-native-firebase/auth中模拟auth模块,但是,我一直得到这个错误。我已经尝试在下面模拟它,但显然它肯定是不正确的,我只是不确定什么是不正确的。
TypeError: Cannot read property 'credential' of undefined
jest.mock('@react-native-firebase/auth', () => ({
auth: {
GoogleAuthProvider: {
credential: jest.fn().mockReturnValue('123'),
},
},
}));
jest.mock('@react-native-community/google-signin', () => ({
GoogleSignin: {
signIn: jest.fn().mockReturnValue('123'),
},
}));
import auth from '@react-native-firebase/auth';
import {GoogleSignin} from '@react-native-community/google-signin';
export const GoogleLogin = async function (): Promise<void | string> {
// Get the users ID token
const {idToken} = await GoogleSignin.signIn();
// Create a Google credential with the token
const googleCredential = auth.GoogleAuthProvider.credential(idToken);
try {
auth().signInWithCredential(googleCredential);
} catch (e) {
console.log(e);
}
};
2条答案
按热度按时间jckbn6z71#
您模拟
@react-native-firebase/auth
,就好像它导出了firebase
(其中auth
命名空间作为firebase.auth
访问),但您应该模拟它,就好像它直接导出了auth
命名空间。在当前的模拟中,您定义了
auth.auth.GoogleAuthProvider.credential
而不是auth.GoogleAuthProvider.credential
。字符串
nhaq1z212#
现有的答案没有涵盖如何模拟
auth().signInWithCredential
。我已经更新了下面的答案。它使用了来自
'@react-native-firebase/auth'
的auth
的default export
,并模拟了auth().signInWithCredential()
。然而,正确的方法是使用来自'@react-native-firebase/auth'
的firebase
的命名export
和模拟firebase.auth().signInWithCredential()
。您可以看到@react-native-firebase/auth如何在此script中导出模块
个字符