firebase NextJS Jest语法错误:意外标记“export”

8i9zcol2  于 2022-11-17  发布在  Jest
关注(0)|答案(1)|浏览(178)

bounty将在13小时后过期。回答此问题可获得+50声望奖励。Luis希望吸引更多人关注此问题。

我尝试在NextJs中测试一个页面,该页面有一个初始化firebase的firebase上下文提供程序和另一个控制对firebase/auth的访问的firebase上下文提供程序。

import {
  getAuth,
  User,
  signInWithEmailAndPassword,
  createUserWithEmailAndPassword,
  UserCredential,
  signOut,
  signInWithPopup,
  GoogleAuthProvider,
} from "firebase/auth";

但Jest似乎并不喜欢它,因为我得到了以下错误:

SyntaxError: Unexpected token 'export'

      15 |   createUserWithEmailAndPassword,
      16 |   UserCredential,
    > 17 |   signOut,
         |               ^
      18 |   signInWithPopup,
      19 |   GoogleAuthProvider,
      20 | } from "firebase/auth";

我确实安装了ts-jest,我在某个地方看到了一个使用babel的修复程序,但是我不太喜欢在NextJS中使用babel,有没有其他方法来修复这个问题?

pgky5nke

pgky5nke1#

您可以使用next-firebase-auth
它还显示了如何设置你的应用程序的笑话:

// Create a mock FirebaseUser instance with the fields that you use.
const mockFirebaseUser = {
  displayName: 'Banana Manana',
  // ... other fields from firebaseUser that you may use
}

/**
 * Build and return a dummy AuthUser instance to use in tests.
 *
 * @arg {boolean} isLoggedIn - Pass `false` to mimic a logged out user.
 * @returns {AuthUserContext} - A mocked AuthUser instance, with 'serialize' added.
 */
const getMockAuthUser = (isLoggedIn = true) => ({
  id: isLoggedIn ? 'abcd1234' : null,
  email: isLoggedIn ? 'banana@banana.com' : null,
  emailVerified: isLoggedIn,
  getIdToken: jest.fn(async () => (isLoggedIn ? 'i_am_a_token' : null)),
  clientInitialized: isLoggedIn,
  firebaseUser: isLoggedIn ? mockFirebaseUser : null,
  signOut: jest.fn(),
  serialize: jest.fn(() => 'serialized_auth_user'),
})

export default getMockAuthUser

相关问题