功能
功能 | 描述 |
---|---|
断言失败(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;
};