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)
}