假设我们有一些验证ViewController
(比如 vc1 )对于UItextfield
in shouldChangeCharactersInRange
方法,因为用户只能输入数字,不能输入字母或其他特殊字符。
我只是想知道在我们的XCTestCase
类,这在单元测试中是否可能,以检查特定的uitextfield
,是否允许某些字符(在我的情况下仅允许数字)?
进行调用的单元测试shouldChangeCharactersInRange
并检查结果是否正确的期望。
这是如何对委托方法进行单元测试的示例。当 UIKit 调用特定方法时,只需让测试调用相同的方法即可。
即使特定的类可能实现委托方法,但测试最好不了解这一点。 UIKit 向文本字段询问其委托,然后调用它。我们的测试应该做同样的事情,并通过委托调用。否则,我们将锁定实现,这将使重构委托方法变得更加困难。
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)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)