gpt4 book ai didi

ios - 单元测试电子邮件 注册 Firebase

转载 作者:行者123 更新时间:2023-11-30 12:03:54 25 4
gpt4 key购买 nike

我刚刚陷入 Firebase 项目并温习我的单元测试技能。

我使用单元测试来检查在注册时输入无效的电子邮件/密码时是否会出现正确的结果。这很好。

我还想检查当我输入有效的详细信息时是否会发生正确的事情。不过,我不希望每次运行此测试时都创建一个新帐户,这只会弄乱我的 Firebase 数据库。

有什么解决方案吗?也许,之后直接调用删除用户方法?但这似乎有点OTT。

最佳答案

您需要使用 Test Dummy AKA Mock 来表示检查有效性然后保存的业务逻辑。你如何做到这一点将取决于你如何构建你的应用程序,但如果我假设验证详细信息和保存详细信息是同一类上的两个不同函数或单独类上的不同函数,那么......在你的应用程序中创建一个子类单元测试(嵌套类很好),它对您的 ACTUAL 类进行子类化并覆盖相关的保存方法以不执行任何操作(或者可能注册该方法被调用,然后您可以在测试中断言。)然后需要将这个新子类注入(inject)为实例到您的调用类中:您如何执行此操作/它有多容易将取决于您如何构建应用程序。希望当您实例化调用类时,您可以使用模拟来设置它的属性,作为测试设置的一部分。

class LoginCapture {
var loginChecker = LoginChecker()
func validateLogin() {
// business logic
loginChecker.isLoginValid()
}
func saveUser() {
// business Logic
loginChecker.saveNewUser()
}
}
class LoginChecker {
func isLoginValid() -> Bool {
// business logic
}
func saveNewUser() {
// business logic that creates firebase record
}

class myUnitTest: XCTestCase {
var sut: LoginCapture?
class LoginCheckerMock: LoginChecker {
var saveCalled = false
override func saveNewUser() {
saveCalled = true
}
}
func setup() {
sut = LoginCapture()
sut.loginChecker = LoginCheckerMock()
}
func myTest() {
// run your test logic. You can also assertTrue that saveCalled = true

显然,这只是一个想法。您可能想搜索测试假人、模拟等以及依赖注入(inject)。

关于ios - 单元测试电子邮件 注册 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46885340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com