Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Zbuduj testy jednostkowe

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Pakiet emulatorów lokalnych Firebase ułatwia pełną weryfikację funkcji i działania aplikacji . To także świetne narzędzie do weryfikacji konfiguracji reguł zabezpieczeń Firebase. Użyj emulatorów Firebase, aby uruchamiać i automatyzować testy jednostkowe w środowisku lokalnym. Metody opisane w tym dokumencie powinny pomóc w tworzeniu i automatyzacji testów jednostkowych aplikacji, które weryfikują Twoje reguły.

Jeśli jeszcze tego nie zrobiłeś, skonfiguruj emulatory Firebase .

Zanim uruchomisz emulator

Zanim zaczniesz korzystać z emulatora, pamiętaj o następujących kwestiach:

  • Emulator początkowo załaduje reguły określone w polu firestore.rules lub „storage.rules” w pliku firebase.json . Jeśli plik nie istnieje i nie używasz metody loadFirestoreRules lub 'loadStorageRules', jak opisano poniżej, emulator traktuje wszystkie projekty jako posiadające otwarte reguły.
  • Podczas gdy większość pakietów SDK Firebase działa bezpośrednio z emulatorami, tylko biblioteka @firebase/rules-unit-testing obsługuje auth w regułach bezpieczeństwa, co znacznie ułatwia testy jednostkowe. Ponadto biblioteka obsługuje kilka funkcji specyficznych dla emulatora, takich jak czyszczenie wszystkich danych, które wymieniono poniżej.
  • Emulatory będą również akceptować produkcyjne tokeny uwierzytelniania Firebase dostarczane za pośrednictwem pakietów Client SDK i odpowiednio oceniać reguły, co pozwala na połączenie aplikacji bezpośrednio z emulatorami w ramach testów integracyjnych i ręcznych.

Różnice między emulatorami baz danych a produkcją

  • Nie musisz jawnie tworzyć instancji bazy danych. Emulator automatycznie utworzy każdą instancję bazy danych, do której uzyskano dostęp.
  • Każda nowa baza danych jest uruchamiana z zamkniętymi regułami, więc użytkownicy niebędący administratorami nie będą mogli czytać ani pisać.
  • Każda emulowana baza danych stosuje limity i przydziały planu Spark (przede wszystkim ogranicza to każde wystąpienie do 100 równoczesnych połączeń).
  • Każda baza danych zaakceptuje ciąg "owner" jako token uwierzytelniania administratora.
  • Emulatory nie współpracują obecnie z innymi produktami Firebase. Warto zauważyć, że normalny przepływ Uwierzytelniania Firebase nie działa. Zamiast tego można użyć metody initializeTestApp() w bibliotece rules-unit-testing , która przyjmuje pole auth . Obiekt Firebase utworzony przy użyciu tej metody zachowuje się tak, jakby został pomyślnie uwierzytelniony jako dowolna podana przez Ciebie jednostka. Jeśli przekażesz null , będzie on zachowywał się jak użytkownik nieuwierzytelniony (na przykład auth != null zakończą się niepowodzeniem).

Interakcja z emulatorem bazy danych czasu rzeczywistego

Produkcyjna instancja bazy danych czasu rzeczywistego Firebase jest dostępna w subdomenie firebaseio.com , a dostęp do interfejsu API REST można uzyskać w następujący sposób:

https://<database_name>.firebaseio.com/path/to/my/data.json

Emulator działa lokalnie i jest dostępny pod adresem localhost:9000 . Aby wchodzić w interakcję z konkretną instancją bazy danych, należy użyć parametru zapytania ns w celu określenia nazwy bazy danych.

http://localhost:9000/path/to/my/data.json?ns=<database_name>

Uruchom lokalne testy jednostkowe za pomocą pakietu JavaScript SDK w wersji 9

Firebase dystrybuuje bibliotekę testów jednostkowych reguł bezpieczeństwa z pakietem SDK JavaScript w wersji 9 i pakietem SDK w wersji 8. Interfejsy API bibliotek znacznie się różnią. Zalecamy bibliotekę testową v9, która jest bardziej uproszczona i wymaga mniej konfiguracji, aby połączyć się z emulatorami, a tym samym bezpiecznie uniknąć przypadkowego użycia zasobów produkcyjnych. Aby zapewnić wsteczną zgodność, nadal udostępniamy bibliotekę testową v8 .

Użyj modułu @firebase/rules-unit-testing do interakcji z emulatorem działającym lokalnie. Jeśli wystąpią przekroczenia limitów czasu lub błędy ECONNREFUSED , sprawdź, czy emulator faktycznie działa.

Zdecydowanie zalecamy korzystanie z najnowszej wersji Node.js, aby można było używać notacji async/await . Prawie wszystkie zachowania, które możesz chcieć przetestować, obejmują funkcje asynchroniczne, a moduł testowania został zaprojektowany do pracy z kodem opartym na obietnicy.

Biblioteka testów jednostkowych reguł v9 jest zawsze świadoma emulatorów i nigdy nie dotyka zasobów produkcyjnych.

Bibliotekę importujesz za pomocą modułowych instrukcji importu v9. Na przykład:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment,
  RulesTestEnvironment,
} from "@firebase/rules-unit-testing"

// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.

Implementacja testów jednostkowych po zaimportowaniu obejmuje:

  • Tworzenie i konfigurowanie RulesTestEnvironment z wywołaniem initializeTestEnvironment .
  • Konfigurowanie danych testowych bez wyzwalania Reguł przy użyciu wygodnej metody, która umożliwia tymczasowe ich pominięcie, RulesTestEnvironment.withSecurityRulesDisabled .
  • Konfigurowanie zestawu testów i dla każdego testu przed/po zaczepach z wywołaniami czyszczenia danych testowych i środowiska, takich jak RulesTestEnvironment.cleanup() lub RulesTestEnvironment.clearFirestore() .
  • Implementowanie przypadków testowych, które naśladują stany uwierzytelniania przy użyciu RulesTestEnvironment.authenticatedContext i RulesTestEnvironment.unauthenticatedContext .

Wspólne metody i funkcje użytkowe

Zobacz także metody testowania specyficzne dla emulatora w v9 SDK .

initializeTestEnvironment() => RulesTestEnvironment

Ta funkcja inicjuje środowisko testowe do testowania jednostkowego reguł. Wywołaj tę funkcję najpierw, aby przeprowadzić konfigurację testową. Pomyślne wykonanie wymaga uruchomienia emulatorów.

Funkcja akceptuje opcjonalny obiekt definiujący TestEnvironmentConfig , który może składać się z identyfikatora projektu i ustawień konfiguracyjnych emulatora.

let testEnv = await initializeTestEnvironment({
  projectId: "demo-project-1234",
  firestore: {
    rules: fs.readFileSync("firestore.rules", "utf8"),
  },
});

RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext

Ta metoda tworzy RulesTestContext , który zachowuje się jak uwierzytelniony użytkownik uwierzytelniania. Żądania utworzone za pomocą zwróconego kontekstu będą miały dołączony fałszywy token uwierzytelniania. Opcjonalnie przekaż obiekt definiujący oświadczenia niestandardowe lub zastąpienia dla ładunków tokenu uwierzytelniania.

Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do wszystkich skonfigurowanych wystąpień emulatora, w tym skonfigurowanych za pomocą initializeTestEnvironment .

// Assuming a Firestore app and the Firestore emulator for this example
import { setDoc } from "firebase/firestore";

const alice = testEnv.authenticatedContext("alice", { … });
// Use the Firestore instance associated with this context
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

Ta metoda tworzy RulesTestContext , który zachowuje się jak klient, który nie jest zalogowany za pośrednictwem uwierzytelniania. Żądania utworzone za pomocą zwróconego kontekstu nie będą miały dołączonych tokenów uwierzytelniania Firebase.

Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do wszystkich skonfigurowanych wystąpień emulatora, w tym skonfigurowanych za pomocą initializeTestEnvironment .

// Assuming a Cloud Storage app and the Storage emulator for this example
import { getStorage, ref, deleteObject } from "firebase/storage";

const alice = testEnv.unauthenticatedContext();

// Use the Cloud Storage instance associated with this context
const desertRef = ref(alice.storage(), 'images/desert.jpg');
await assertSucceeds(deleteObject(desertRef));

RulesTestEnvironment.withSecurityRulesDisabled()

Uruchom funkcję konfiguracji testu z kontekstem, który zachowuje się tak, jakby reguły zabezpieczeń były wyłączone.

Ta metoda przyjmuje funkcję wywołania zwrotnego, która przyjmuje kontekst omijania reguł zabezpieczeń i zwraca obietnicę. Kontekst zostanie zniszczony, gdy obietnica zostanie rozwiązana / odrzucona.

RulesTestEnvironment.cleanup()

Ta metoda niszczy wszystkie RulesTestContexts utworzone w środowisku testowym i czyści podstawowe zasoby, umożliwiając czyste wyjście.

Ta metoda w żaden sposób nie zmienia stanu emulatorów. Aby zresetować dane między testami, użyj metody czyszczenia danych specyficznej dla emulatora aplikacji.

assertSucceeds(pr: Promise<any>)) => Promise<any>

Jest to funkcja użytkowa przypadków testowych.

Funkcja zapewnia, że ​​dostarczona obietnica otaczająca operację emulatora zostanie rozwiązana bez naruszeń reguł zabezpieczeń.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

Jest to funkcja użytkowa przypadków testowych.

Funkcja zapewnia, że ​​dostarczona obietnica otaczająca operację emulatora zostanie odrzucona z naruszeniem reguł zabezpieczeń.

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

Metody specyficzne dla emulatora

Zobacz także typowe metody testowania i funkcje narzędzi w pakiecie v9 SDK .

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Ta metoda czyści dane w bazie danych Firestore, która należy do identyfikatora projectId skonfigurowanego dla emulatora Firestore.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

Ta metoda pobiera instancję Firestore dla tego kontekstu testowego. Zwróconego wystąpienia pakietu SDK klienta Firebase JS można używać z interfejsami API pakietu SDK klienta (modułowa wersja 9 lub kompatybilność z wersją 9).

Baza danych czasu rzeczywistego

Baza danych czasu rzeczywistego

RulesTestEnvironment.clearDatabase() => Promise<void>

Ta metoda czyści dane w bazie danych czasu rzeczywistego, która należy do identyfikatora projectId skonfigurowanego dla emulatora bazy danych czasu rzeczywistego.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

Pobierz instancję bazy danych czasu rzeczywistego dla tego kontekstu testowego. Zwróconego wystąpienia pakietu SDK klienta Firebase JS można używać z interfejsami API pakietu SDK klienta (modułowa wersja 9 lub kompatybilność z wersją 9). Metoda akceptuje adres URL instancji Realtime Database. Jeśli zostanie określony, zwraca instancję emulowanej wersji przestrzeni nazw z parametrami wyodrębnionymi z adresu URL.

Magazyn w chmurze

Magazyn w chmurze

RulesTestEnvironment.clearStorage() => Promise<void>

Ta metoda czyści obiekty i metadane w zasobnikach pamięci należących do identyfikatora projectId skonfigurowanego dla emulatora Cloud Storage.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

Ta metoda zwraca wystąpienie magazynu skonfigurowane do łączenia się z emulatorem. Metoda akceptuje adres URL gs:// do zasobnika pamięci masowej Firebase do testowania. Jeśli zostanie określony, zwraca instancję Storage dla emulowanej wersji nazwy zasobnika.

Uruchamiaj lokalne testy jednostkowe za pomocą pakietu SDK JavaScript v8

Wybierz produkt, aby zobaczyć metody używane przez pakiet Firebase Test SDK do łączenia się z emulatorem.

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej uwierzytelniania określonej w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Ta metoda zwraca zainicjowaną administracyjną aplikację Firebase. Ta aplikacja omija reguły bezpieczeństwa podczas wykonywania odczytów i zapisów. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan dla testów.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne. Użyj tego, aby wyczyścić aplikacje między testami lub po nich.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Ta metoda wysyła reguły do ​​lokalnie działającej bazy danych. Pobiera obiekt, który określa reguły jako ciąg. Użyj tej metody, aby ustawić reguły bazy danych.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie lub które powiedzie się, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby potwierdzić, jeśli odczyt lub zapis bazy danych nie powiedzie się.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby potwierdzić, czy odczyt lub zapis bazy danych powiedzie się.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Ta metoda usuwa wszystkie dane powiązane z konkretnym projektem w lokalnie działającej instancji Firestore. Użyj tej metody do czyszczenia po testach.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Baza danych czasu rzeczywistego

Baza danych czasu rzeczywistego

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i zastąpieniu zmiennej uwierzytelniania określonej w opcjach.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator w celu skonfigurowania stanu dla testów.

Zwraca zainicjowaną aplikację administratora Firebase odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu do bazy danych.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Użyj tego, aby ustawić reguły swojej bazy danych.

Wysyła reguły do ​​lokalnie działającej bazy danych. Pobiera obiekt opcji, który określa twoją "databaseName" i twoje "reguły" jako ciągi.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi detektorami zapobiegają zamykaniu JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie i powiodą się, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis bazy danych nie powiedzie się:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis bazy danych się powiódł:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Magazyn w chmurze

Magazyn w chmurze

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika na dane i zastąpieniu zmiennej uwierzytelniania określonej w opcjach.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator w celu skonfigurowania stanu dla testów.

Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie zasobnika na dane określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas czytania i zapisywania w zasobniku.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Użyj tego, aby ustawić reguły zasobnika na dane.

Wysyła reguły do ​​lokalnie zarządzanych zasobników pamięci. Pobiera obiekt opcji, który określa „storageBucket” i „reguły” jako ciągi.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi detektorami zapobiegają zamykaniu JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie i powiodą się, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis zasobnika pamięci nie powiedzie się:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis zasobnika pamięci powiodło się:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());

API biblioteki RUT dla JS SDK v8

Wybierz produkt, aby zobaczyć metody używane przez pakiet Firebase Test SDK do łączenia się z emulatorem.

Cloud Firestore

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej uwierzytelniania określonej w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Ta metoda zwraca zainicjowaną administracyjną aplikację Firebase. Ta aplikacja omija reguły bezpieczeństwa podczas wykonywania odczytów i zapisów. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan dla testów.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne. Użyj tego, aby wyczyścić aplikacje między testami lub po nich.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Ta metoda wysyła reguły do ​​lokalnie działającej bazy danych. Pobiera obiekt, który określa reguły jako ciąg. Użyj tej metody, aby ustawić reguły bazy danych.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie lub które powiedzie się, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby potwierdzić, jeśli odczyt lub zapis bazy danych nie powiedzie się.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby potwierdzić, czy odczyt lub zapis bazy danych powiedzie się.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Ta metoda usuwa wszystkie dane powiązane z konkretnym projektem w lokalnie działającej instancji Firestore. Użyj tej metody do czyszczenia po testach.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Baza danych czasu rzeczywistego

Baza danych czasu rzeczywistego

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i zastąpieniu zmiennej uwierzytelniania określonej w opcjach.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator w celu skonfigurowania stanu dla testów.

Zwraca zainicjowaną aplikację administratora Firebase odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu do bazy danych.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Użyj tego, aby ustawić reguły swojej bazy danych.

Wysyła reguły do ​​lokalnie działającej bazy danych. Pobiera obiekt opcji, który określa twoją "databaseName" i twoje "reguły" jako ciągi.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi detektorami zapobiegają zamykaniu JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie i powiodą się, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis bazy danych nie powiedzie się:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis bazy danych się powiódł:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Magazyn w chmurze

Magazyn w chmurze

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika na dane i zastąpieniu zmiennej uwierzytelniania określonej w opcjach.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator w celu skonfigurowania stanu dla testów.

Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie zasobnika na dane określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas czytania i zapisywania w zasobniku.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Użyj tego, aby ustawić reguły zasobnika na dane.

Wysyła reguły do ​​lokalnie zarządzanych zasobników pamięci. Pobiera obiekt opcji, który określa „storageBucket” i „reguły” jako ciągi.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi detektorami zapobiegają zamykaniu JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe się powiedzie i powiedzie się, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis zasobnika pamięci nie powiedzie się:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która się powiedzie, jeśli dane wejściowe się powiedzie i zostaną odrzucone, jeśli dane wejściowe zostaną odrzucone.

Użyj tego, aby potwierdzić, że odczyt lub zapis zasobnika pamięci powiodło się:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());