RulesTestEnvironment 介面

用來控制規則單元測試環境的物件。可用於針對不同的驗證情況建立 RulesTestContext。

Signature:

export interface RulesTestEnvironment 

屬性

屬性 類型 說明
模擬器 {資料庫?:HostAndPort;例如:HostAndPort; Storage?:HostAndPort; } 在建立測試環境時指定或找到的模擬器設定唯讀副本。
projectId 字串 建立測試環境時指定或找到的專案 ID。

方法

方法 說明
authenticatedContext(user_id, tokenOptions) 建立 RulesTestContext,運作方式與經過驗證的 Firebase 驗證使用者相同。透過傳回的內容建立的要求,會附加模擬 Firebase 驗證權杖。
cleanup() 在測試程式碼的結尾呼叫清理函式。刪除測試環境中建立的所有 RulesTestContext 並清除基礎資源,允許乾淨退出。這個方法不會以任何方式變更模擬器中的狀態。如要在測試之間重設資料,請參閱 clearDatabase()clearFirestore()clearStorage()
clearDatabase() 清除即時資料庫模擬器命名空間中的所有資料。
clearFirestore() 在 Firestore 模擬器中清除屬於 projectId 的 Firestore 資料。
clearStorage() 在儲存空間模擬器中,清除所有值區內的 Storage 檔案和中繼資料。
unauthenticatedContext() 建立 RulesTestContext,行為模式與未透過 Firebase Auth 登入的用戶端類似。透過傳回的內容建立的要求不會附加 Firebase 驗證權杖。
withSecurityRulesDisabled(callback)

RulesTestEnvironment.emulators

在建立測試環境時指定或找到的模擬器設定唯讀副本。

Signature:

readonly emulators: {
        database?: HostAndPort;
        firestore?: HostAndPort;
        storage?: HostAndPort;
    };

RulesTestEnvironment.projectId

建立測試環境時指定或找到的專案 ID。

Signature:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

建立 RulesTestContext,運作方式與經過驗證的 Firebase 驗證使用者相同。

透過傳回結構定義建立的要求會附加模擬 Firebase 驗證權杖。

Signature:

authenticatedContext(user_id: string, tokenOptions?: TokenOptions): RulesTestContext;

參數

參數 類型 說明
user_id 字串 使用者 ID指定權杖的「user_id」和「sub」值
tokenOptions TokenOptions Firebase 驗證權杖酬載的自訂聲明或覆寫值

傳回:

RulesTestContext

範例

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

RulesTestEnvironment.cleanup()

在測試程式碼的結尾呼叫清理函式。刪除在測試環境中建立的所有 RulesTestContexts,並清除基礎資源,以便順暢退出。

這個方法不會以任何方式變更模擬器中的狀態。如要在測試之間重設資料,請參閱 clearDatabase()clearFirestore()clearStorage()

Signature:

cleanup(): Promise<void>;

傳回:

Promise<void>

RulesTestEnvironment.clearDatabase()

清除即時資料庫模擬器命名空間中的所有資料。

Signature:

clearDatabase(): Promise<void>;

傳回:

Promise<void>

RulesTestEnvironment.clearFirestore()

在 Firestore 模擬器中清除 projectId 的預設 Firestore 資料庫資料。

Signature:

clearFirestore(): Promise<void>;

傳回:

Promise<void>

RulesTestEnvironment.clearStorage()

在儲存空間模擬器中清除使用中值區中的 Storage 檔案和中繼資料。

Signature:

clearStorage(): Promise<void>;

傳回:

Promise<void>

RulesTestEnvironment.unauthenticatedContext()

建立 RulesTestContext,其行為類似於用戶端未透過 Firebase Auth 登入的。

透過傳回的結構定義建立的要求不會附加 Firebase 驗證權杖。

Signature:

unauthenticatedContext(): RulesTestContext;

傳回:

RulesTestContext

範例

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

RulesTestEnvironment.withSecurityRulesDisabled()

Signature:

withSecurityRulesDisabled(callback: (context: RulesTestContext) => Promise<void>): Promise<void>;

參數

參數 類型 說明
回呼 (背景資訊:RulesTestContext) => Promise<void>

傳回:

Promise<void>