如何对大多数视图使用 Firebase 身份验证的 Swift 应用程序进行单元测试?

Sah*_*cha 5 unit-testing firebase xctest swift

我使用 Firebase 在 Swift 中构建了一个应用程序,其中大部分功能只有在用户登录后才能访问。例如,我有一个预算页面,可以从数据库中获取事件预算,但这只能在用户登录后才能完成。登录。

有人能建议我如何测试需要调用数据库的功能吗?我本以为我需要在测试类中登录用户,然后使用这些详细信息来测试我的控制器,但每次它都返回零?我什至尝试在测试类中运行登录视图控制器来验证用户身份,但这也不起作用。

谢谢你!

Pas*_*sta 4

对于单元测试,最好消除所有外部依赖项。我更喜欢这样做的一种方法,特别是对于任何类型的网络或数据库,是创建一个模拟对象并注入模拟对象,而不是使用实际的网络模块或数据库。这将涉及依赖注入的一些重构,并将 Firebase 的管理器抽象为可以模拟的协议。使用 MockFirebase,您可以拥有所有“身份验证”,而无需使用网络或访问实际数据库。

如果您的 Firebase 管理器设置为单例,那么用于进行模拟的一个很好的资源是:

https://medium.com/@johnsundell/testing-swift-code-that-uses-system-singletons-in-3-easy-steps-89f4884cd325

有关一般模拟的信息,这里是另一个链接:

https://www.swiftbysundell.com/posts/mocking-in-swift