如何在Swift中unit testing这个自定义的UITextField?

我已经创build了一个像这样的自定义UITextField

import Foundation import UIKit class NoZeroTextField: UITextField, UITextFieldDelegate { required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.delegate = self } func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if (string == "0" ) { //ignore input return false } return true } } 

我正在尝试编写类的unit testing,但问题是与NSCoder实例传递给构造函数。 我无法实例化或将其设置为零。 我怎样才能unit testing这个类?

我明白了这一点。 被testing的类别:

 import Foundation import UIKit public class CustomTextField: UITextField, UITextFieldDelegate{ required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.delegate = self } public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if (string == "X" ){ //ignore input return false } return true } } 

testing本身:

 import UIKit import XCTest import TryCustom import Foundation class CustomTextFieldTests: XCTestCase { func testCustomTextField() { //pass in dummy non abstract NSCoder (NSKeyedUnarchiver) let cd = NSKeyedUnarchiver(forReadingWithData: NSMutableData()) let c = CustomTextField(coder:cd) let result = c!.textField(c!, shouldChangeCharactersInRange: NSRange(), replacementString: "X") XCTAssertFalse(result) } }