【问题标题】:How can I keep unit testing in Unity after introducing security rules to firestore?向 firestore 引入安全规则后,如何在 Unity 中继续进行单元测试?
【发布时间】:2022-12-01 10:03:29
【问题描述】:

我正在使用 cloud firestore + cloud functions + firestore auth 来支持我的游戏。

我开发了应用程序的主要部分,其中包括应用程序中的单元测试以及云功能的打字稿测试。现在我想添加安全规则来保护数据。

当我这样做时,要求对调用进行身份验证,我所有的统一单元测试(自然地)都会失败,因为我没有对用户进行身份验证,而是将它们模拟为数据库中用户的数据表示。

我想继续统一使用我的单元测试,但仍然需要真正的数据库来要求身份验证。

我试图四处寻找模拟身份验证或身份验证测试环境,但除了库 rules-unit-testing 外什么也没找到。

我看到它的内容带有专门用于嘲笑用户的逻辑,这让我认为我通过尝试统一执行此操作而以错误的方式理解了这一点。我的问题是,如何继续统一进行游戏测试,这需要与 firestore 服务器交互,同时保持安全规则?

【问题讨论】:

    标签: unit-testing authentication unity3d google-cloud-firestore firebase-security


    【解决方案1】:

    根据documentation

    如果您正在构建一个您想要长期维护和构建的应用程序,那么合并一个自动化测试策略通常是一个好主意,就像在 Test Driven Development with Cypress/Jest 模块中实现的那样。

    但是要将 Firestore 安全规则纳入自动化测试策略?您可以查看本教程,其中说明使用 Jest 对 Firestore 安全规则进行单元测试。

    在文档中,建议使用 TDD (Test Driven Development) 方法来构建测试。这意味着它将在编写安全规则之前编写测试。但是,如果您想在已经编写安全规则后编写测试,您也可以遵循documentation 中的建议。

    【讨论】:

      【解决方案2】:

      我会在更多时间后回答我自己的问题。

      我的分析是,我遇到问题是因为我的代码耦合得太紧:服务器逻辑在客户端,在引入安全规则时崩溃了。我决定将逻辑转移到云函数,并且只有简单的客户端调用(设置、获取、更新、http 函数)。

      因此,如果有人遇到类似的问题(架构阻碍了最佳实践的使用),我建议重新考虑架构。写的时候感觉很明显...

      祝大家编码愉快^_^

      【讨论】:

        猜你喜欢
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 2019-03-21
        • 2020-06-17
        • 2010-11-15
        • 1970-01-01
        • 2018-10-19
        相关资源
        最近更新 更多