【问题标题】:Test a React app that uses Firebase Auth in javascript在 javascript 中测试使用 Firebase Auth 的 React 应用
【发布时间】:2021-05-25 22:54:04
【问题描述】:

我导入登录组件进行测试,我得到这个错误

 ● Test suite failed to run

    FIREBASE FATAL ERROR: Can't determine Firebase Database URL. Be sure to include  a Project ID when calling firebase.initializeApp().

到目前为止我有这个

import React from "react";
import { render} from "@testing-library/react/pure";
import "@testing-library/jest-dom";
import Login from "../src/components/auth/Login";
import * as firebase from "@firebase/testing";

const PROJECT_ID = "connect-four-development";

describe("Login", () => {
  it("renders Login.js without crashing", async () => {
    await firebase.initializeTestApp({ projectId: PROJECT_ID }).firestore();

    render(
        <Login />
    );
  });
});

我应该如何正确初始化应用程序以进行测试?

【问题讨论】:

    标签: reactjs firebase authentication testing jestjs


    【解决方案1】:

    我建议使用 Projects Firebase 控制台中的 config。它看起来像这样:

    var firebaseConfig = {
      apiKey: "API_KEY",
      authDomain: "PROJECT_ID.firebaseapp.com",
      databaseURL: "https://PROJECT_ID.firebaseio.com",
      projectId: "PROJECT_ID",
      storageBucket: "PROJECT_ID.appspot.com",
      messagingSenderId: "SENDER_ID",
      appId: "APP_ID",
      measurementId: "G-MEASUREMENT_ID",
    };
    

    您可以在控制台的以下位置找到您的项目配置:项目设置 -> 常规。在那里你应该创建一个 Web 应用程序,你会得到一个很好的说明如何初始化你的应用程序和配置。

    然后你像这样初始化你的应用程序:

    const firebaseConfig = {
      // ...
    };
    
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    

    对于测试套件,有特定的初始化。

    云防火墙:

    firebase.initializeTestApp({
      projectId: "my-test-project",
      auth: { uid: "alice", email: "alice@example.com" }
    });
    

    实时数据库:

    firebase.initializeTestApp({
      databaseName: "my-database",
      auth: { uid: "alice" }
    });
    

    和存储:

    firebase.initializeTestApp({
      storageBucket: "my-bucket",
      auth: { uid: "alice" }
    });
    

    您还可以将代码更改为:

    describe("Login", () => {
      it("renders Login.js without crashing", async () => {
        firebase.initializeTestApp({ projectId: PROJECT_ID })
        firebase.firestore();
    
        render(
            <Login />
        );
      });
    });
    

    应用初始化是同步的。

    【讨论】:

    • 我实际上已经初始化了应用程序并且应用程序已经完成。我只想问如何初始化测试套件。所以不应该有项目 ID 问题,因为我的应用程序运行良好。我试过你的语法,它仍然给出同样的错误。您可以指出我的具体文档吗?我在身份验证中找不到任何东西。主要用于安全规则。
    • 这是实时数据库模拟器的文档:firebase.google.com/docs/emulator-suite/…
    • 我在设置模拟器后通过了上面的项目 ID 错误,但现在我遇到了另一个错误。 ● 测试套件运行失败 您的API 密钥无效,请检查您是否正确复制了它。 "code": "auth/invalid-api-key", "message": "您的 API 密钥无效,请检查是否复制正确。", }
    • 您能否将其作为有关堆栈溢出的新问题提出来。这样,如果遇到同一个问题,其他人可以更容易地找到它。谢谢
    猜你喜欢
    • 2019-10-29
    • 2021-03-03
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多