gpt4 book ai didi

ios - 我们可以在单元测试时检查 uitextfield 的验证吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:36 25 4
gpt4 key购买 nike

假设我们在 ViewController(例如 vc1)中对 shouldChangeCharactersInRange 方法中的 UItextfield 进行了一些验证,因为用户只能输入数字不是字母或其他特殊字符。

我只想知道在我们的 XCTestCase 类中,这是否可能在单元测试中检查特定的 uitextfield,是否允许一些字符(在我的例子中只有数字)还是没有?

最佳答案

进行调用 shouldChangeCharactersInRange 的单元测试并检查结果应该为真还是假的预期。

这是一个如何对委托(delegate)方法进行单元测试的示例。在 UIKit 调用特定方法的地方,只需让测试调用相同的方法即可。

即使特定的类可能实现了委托(delegate)方法,但最好让测试忽略这一点。 UIKit 向文本字段询问它的委托(delegate),然后调用它。我们的测试应该做同样的事情,并通过委托(delegate)调用。否则我们将锁定实现,这将使重构委托(delegate)方法变得更加困难。

func testMyTextField_ShouldAllowAlphabeticCharacters() {
let vc = // …Whatever you do to load your view controller
vc.loadViewIfNeeded() // Make sure text field is loaded
let field = vc.myTextField

// Call through field.delegate, not through vc
let result = field.delegate.textField(field,
shouldChangeCharactersIn: NSMakeRange(0, 1),
replacementString: "a")

XCTAssertTrue(result)
}

关于ios - 我们可以在单元测试时检查 uitextfield 的验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47389161/

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