功能
功能 | 描述 |
---|---|
斷言失敗(pr) | 斷言承諾會因「權限被拒絕」錯誤而被拒絕。對於斷言安全規則拒絕的特定請求很有用。請參閱下面的範例。此函數可識別來自資料庫、Firestore 和儲存 JS SDK 的權限拒絕錯誤。 |
斷言成功(pr) | 斷言承諾會因「權限被拒絕」錯誤而被拒絕。這是一個無操作函數,按原樣返回傳遞的 Promise,但可用於測試程式碼中的文件目的,以強調某個請求應該成功(例如,規則允許)。 |
初始化測試環境(配置) | 初始化規則單元測試的測試環境。首先呼叫此函數進行測試設定。需要模擬器正在運作。如果未指定主機和端口,此函數會嘗試透過環境變數或透過 Firebase 模擬器中心發現這些模擬器。強烈建議為用於測試的模擬器指定安全規則。請參閱下面的最小範例。 |
withFunctionTriggersDisabled(fn) | 在停用後台 Cloud Functions 觸發器的情況下執行設定函數。這可用於將資料匯入即時資料庫或 Cloud Firestore 模擬器,而無需觸發本地模擬的 Cloud Functions。此方法僅適用於 Firebase CLI 版本 8.13.0 或更高版本。只有當模擬器集線器主機:連接埠由環境變數 FIREBASE_EMULATOR_HUB 指定時,此重載才有效。 |
withFunctionTriggersDisabled(集線器,fn) | 在停用後台 Cloud Functions 觸發器的情況下執行設定函數。這可用於將資料匯入即時資料庫或 Cloud Firestore 模擬器,而無需觸發本地模擬的 Cloud Functions。此方法僅適用於 Firebase CLI 版本 8.13.0 或更高版本。模擬器集線器必須正在運行,在此重載中指定了主機和連接埠。 |
介面
介面 | 描述 |
---|---|
主機和連接埠 | 包含模擬器的主機名稱和連接埠號碼的物件。 |
規則測試上下文 | 代表客戶端的測試上下文。可用於存取模擬器以進行規則單元測試。 |
規則測試環境 | 用於控制單元測試環境的規則的物件。可用於為不同的身份驗證情況建立 RulesTestContext。 |
測試環境配置 | 配置單元測試環境,包括模擬器。 |
類型別名
類型別名 | 描述 |
---|---|
模擬器配置 | 給定模擬器的配置。 |
代幣期權 | 用於測試的模擬使用者令牌的更多選項,包括開發人員指定的自訂聲明或 Firebase 身份驗證令牌有效負載的可選覆蓋。 |
斷言失敗()
斷言承諾會因「權限被拒絕」錯誤而被拒絕。
對於斷言安全規則拒絕的特定請求很有用。請參閱下面的範例。此函數可識別來自資料庫、Firestore 和儲存 JS SDK 的權限拒絕錯誤。
簽名:
export declare function assertFails(pr: Promise<any>): Promise<any>;
參數
範圍 | 類型 | 描述 |
---|---|---|
公關 | 承諾<任何> | 所要兌現的承諾 |
返回:
承諾<任何>
如果 pr 因「權限被拒絕」而被拒絕,則履行 Promise。如果 pr 因任何其他錯誤而被拒絕或已解決,則傳回的 Promise 將被拒絕。
例子
const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });
斷言成功()
兌現承諾才能成功。
這是一個無操作函數,按原樣返回傳遞的 Promise,但可用於測試程式碼中的文件目的,以強調某個請求應該成功(例如,規則允許)。
簽名:
export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;
參數
範圍 | 類型 | 描述 |
---|---|---|
公關 | 承諾<T> |
返回:
承諾<T>
例子
const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });
初始化測試環境()
初始化規則單元測試的測試環境。首先呼叫此函數進行測試設定。
需要模擬器正在運作。如果未指定主機和端口,此函數會嘗試透過環境變數或透過 Firebase 模擬器中心發現這些模擬器。強烈建議為用於測試的模擬器指定安全規則。請參閱下面的最小範例。
簽名:
export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;
參數
範圍 | 類型 | 描述 |
---|---|---|
配置 | 測試環境配置 | 模擬器的配置。如果可以發現,大多數欄位都是可選的 |
返回:
Promise<規則測試環境>
在準備好測試的環境中解決的承諾,或在錯誤時拒絕的承諾。
例子
const testEnv = await initializeTestEnvironment({
firestore: {
rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
// host and port can be omitted if they can be discovered from the hub.
},
// ...
});
withFunctionTriggersDisabled()
在停用後台 Cloud Functions 觸發器的情況下執行設定函數。這可用於將資料匯入即時資料庫或 Cloud Firestore 模擬器,而無需觸發本地模擬的 Cloud Functions。
此方法僅適用於 Firebase CLI 版本 8.13.0 或更高版本。只有當模擬器集線器主機:連接埠由環境變數 FIREBASE_EMULATOR_HUB 指定時,此重載才有效。
簽名:
export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;
參數
範圍 | 類型 | 描述 |
---|---|---|
號 | () => TResult |承諾<TResult> | 一個可以是同步或非同步的函數(傳回一個承諾) |
返回:
承諾<TResult>
withFunctionTriggersDisabled()
在停用後台 Cloud Functions 觸發器的情況下執行設定函數。這可用於將資料匯入即時資料庫或 Cloud Firestore 模擬器,而無需觸發本地模擬的 Cloud Functions。
此方法僅適用於 Firebase CLI 版本 8.13.0 或更高版本。模擬器集線器必須正在運行,在此重載中指定了主機和連接埠。
簽名:
export declare function withFunctionTriggersDisabled<TResult>(hub: {
host: string;
port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;
參數
範圍 | 類型 | 描述 |
---|---|---|
中心 | { 主機:字串;埠:號碼; } | 模擬器集線器的主機和連接埠(例如: {host: 'localhost', port: 4400} ) |
號 | () => TResult |承諾<TResult> | 一個可以是同步或非同步的函數(傳回一個承諾) |
返回:
承諾<TResult>
模擬器配置
給定模擬器的配置。
簽名:
export declare type EmulatorConfig = {
rules?: string;
} & (HostAndPort | {});
代幣期權
用於測試的模擬使用者令牌的更多選項,包括開發人員指定的自訂聲明或 Firebase 身份驗證令牌有效負載的可選覆蓋。
簽名:
export declare type TokenOptions = {
iat?: number;
exp?: number;
auth_time?: number;
provider_id?: 'anonymous';
email?: string;
email_verified?: boolean;
phone_number?: string;
name?: string;
picture?: string;
firebase?: {
sign_in_provider: FirebaseSignInProvider;
identities?: {
[provider in FirebaseSignInProvider]?: string[];
};
};
aud?: string;
iss?: string;
[claim: string]: unknown;
uid?: never;
sub?: never;
user_id?: never;
};