构建单元测试(续11)

Cloud Firestore

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

此方法会返回一个初始化的 Firebase 应用,该应用与选项中指定的项目 ID 和 auth 变量相对应。使用此方法可创建以特定用户身份通过身份验证的应用,以用于测试。

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

initializeAdminApp({ projectId: string }) => FirebaseApp

此方法会返回一个初始化的管理员 Firebase 应用。此应用执行读取和写入操作时会绕过安全规则。使用此方法可创建以管理员身份通过了身份验证的应用以设置测试状态。

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

apps() => [FirebaseApp] 此方法会返回所有当前已经初始化的测试应用和管理应用。使用此方法可在各次测试之间或测试之后清理应用。

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

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

此方法可以将规则发送到本地运行的数据库。它接受一个以字符串描述这些规则的对象。 使用此方法可设置数据库的规则。

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

assertFails(pr: Promise) => Promise

此方法会返回一个在输入成功时遭拒或在输入遭拒时成功的 promise。使用此方法判断数据库读取或写入是否失败。

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

assertSucceeds(pr: Promise) => Promise

此方法会返回一个在输入成功时成功并在输入遭拒时遭拒的 promise。使用此方法判断数据库读取或写入是否成功。

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

clearFirestoreData({ projectId: string }) => Promise

此方法会清除与本地运行的 Firestore 实例中的特定项目相关联的所有数据。使用此方法可在测试之后进行清理。

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

Realtime Database

Realtime Database

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

使用此方法可创建以特定用户身份通过身份验证的应用,以用于测试。

此方法会返回一个初始化的 Firebase 应用,该应用与选项中指定的数据库名称和 auth 变量替换值相对应。

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

使用此方法可创建以管理员身份通过身份验证的应用,以设置测试状态。

此方法会返回一个初始化的 Firebase 管理应用,该应用与选项中指定的数据库名称相对应。在从数据库读取数据和向数据库写入数据时,该应用会绕过安全规则。

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

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

使用此方法可设置数据库的规则。

此方法可以将规则发送到本地运行的数据库,它接受一个以字符串表示“databaseName”和“rules”的选项对象。

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

apps() => [FirebaseApp]

返回目前已初始化的所有测试应用和管理应用。

使用此方法可在测试之间或测试之后清理应用(请注意,带有处于活跃状态的监听器的已初始化应用会阻止 JavaScript 退出):

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

assertFails(pr: Promise) => Promise

返回一个在输入成功时遭拒并在输入遭拒时成功的 promise。

使用此方法判断数据库读取或写入是否失败。

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

assertSucceeds(pr: Promise) => Promise

返回一个在输入成功时成功并在输入遭拒时遭拒的 promise。

使用此方法判断数据库读取或写入是否成功:

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

Cloud Storage

Cloud Storage

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

使用此方法可创建以特定用户身份通过身份验证的应用,以用于测试。

此方法会返回一个初始化的 Firebase 应用,该应用与选项中指定的存储桶名称和 auth 变量替换值相对应。

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

使用此方法可创建以管理员身份通过身份验证的应用,以设置测试状态。

此方法会返回一个初始化的 Firebase 管理应用,该应用与选项中指定的存储桶名称相对应。在从存储桶读取数据和向存储桶写入数据时,该应用会绕过安全规则。

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

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

使用此方法可设置存储桶的规则。

将规则发送到本地代管的存储桶。它接受一个以字符串表示“storageBucket”和“rules”的选项对象。

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

apps() => [FirebaseApp]

返回目前已初始化的所有测试应用和管理应用。

使用此方法可在测试之间或测试之后清理应用(请注意,带有处于活跃状态的监听器的已初始化应用会阻止 JavaScript 退出):

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

assertFails(pr: Promise) => Promise

返回一个在输入成功时遭拒并在输入遭拒时成功的 promise。

使用此方法判断存储桶读取或写入是否失败:

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

assertSucceeds(pr: Promise) => Promise

返回一个在输入成功时成功并在输入遭拒时遭拒的 promise。

使用此方法判断存储桶读取或写入是否成功:

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