Это короткий пример, но вы всегда должны пробовать несколько разных вариантов, как если бы это был текст вместо цифр и отрицательных чисел, чисел, которые больше, чем int и т. Д ...
class AddingViewController: UIViewController {
var sum = 0
let textField1 = UITextField()
let textField2 = UITextField()
let button = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: #selector(addNumbers), for: .touchUpInside)
}
@objc func addNumbers() {
guard let number1 = Int(textField1.text!), let number2 = Int(textField2.text!) else {
return
}
sum = number1 + number2
}
}
class TestAddingViewController {
let vc = AddingViewController()
func testAddNumbers() {
let number1 = 1
let number2 = 2
let sum = number1 + number2
vc.textField1.text = "\(number1)"
vc.textField2.text = "\(number2)"
vc.button.sendActions(for: .touchUpInside)
XCTAssertEqual(sum, vc.sum)
}
}
Если viewController взят из раскадровки, вы называете его так, как обычно называете раскадровку viewControllers
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
И кнопка textfields + будет @outlets
, а действие кнопки будет @IBAction
, а не @objc func