You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Firestore安全规则后,如何在Unity中保留单元测试?

在保留Firestore安全规则的前提下进行Unity游戏测试的可行方案

1. 用真实测试账号完成认证

  • 在Firebase控制台创建专属的测试Auth账号(比如test_game_user@yourdomain.com),把账号密码存在测试配置文件里(记得不要提交到代码仓库)。
  • Unity测试代码里,初始化Firebase后先调用SignInWithEmailAndPasswordAsync完成真实登录,之后再执行所有Firestore操作。
  • 建议单独建一个测试用Firebase项目,和生产项目完全隔离,测试数据不会污染生产环境,安全规则可以和生产保持一致,也能根据测试需求灵活调整。

2. 基于Firebase本地模拟器做离线测试

  • 启用Firebase Emulator Suite,本地运行Auth、Firestore模拟器,Unity测试直接连接本地服务,不用碰线上数据库。
  • Unity代码里配置Firebase指向模拟器地址:
    var firestore = FirebaseFirestore.DefaultInstance;
    firestore.Settings.Host = "localhost:8080";
    firestore.Settings.SslEnabled = false;
    
  • 模拟器支持模拟认证流程:可以通过Auth模拟器的API创建测试用户,或者在Unity测试代码里调用Auth的本地接口完成登录,既能触发安全规则校验,又完全离线,测试速度快还不产生线上费用。

3. 给安全规则加测试专属放行条件(需谨慎)

  • 在安全规则中添加判断逻辑,允许带特定标识的请求通过,比如检查用户自定义Claims里的is_test字段:
    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if request.auth != null && (request.auth.token.is_test == true || !request.auth.token.is_test);
          // 更严谨的写法:仅允许特定测试账号或测试环境的请求
        }
      }
    }
    
  • Unity测试用专门的账号登录后,通过Cloud Functions或Admin SDK给该账号添加is_test: true的自定义Claims,就能在触发安全规则核心逻辑的同时完成测试。
  • 注意:生产环境必须禁用这个规则,或者通过环境变量严格控制开关,避免安全漏洞。

4. 用Admin SDK生成临时测试Token

  • 写一个简单的测试辅助接口(可以是Cloud Functions或者本地Node脚本),利用Firebase Admin SDK生成带自定义权限的临时Token。
  • Unity测试代码调用这个接口获取Token,再用SignInWithCustomTokenAsync完成认证,就能模拟不同权限的用户,同时触发安全规则校验:
    var customToken = await GetTestTokenFromHelper();
    var signInResult = await FirebaseAuth.DefaultInstance.SignInWithCustomTokenAsync(customToken);
    // 后续执行Firestore测试操作
    

内容的提问来源于stack exchange,提问作者camazing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:55:18