目标: 我目前正在对按下 UISwitch 时的行为进行单元测试。
问题: 我的问题是我用来以编程方式更改 UISwitch 状态的
sendActions(for: .valueChanged)
没有像我想象的那样工作。它不会使它从 false
变为 true
(在我的示例中)。
我做了什么?: 我正在使用以下路径:
true
sendActions(for: .valueChanged)
把它改成false
XCTAssertEqual()
来检查它是否正确等于预期的false
。 (我也可以使用XCTAssertFalse()
直接检查它是否是false
。Ps:我在我的
loadViewIfNeeded()
中正确通过了
setUPWithError()
问题: 我怎样才能测试我的 UISwitch ??
代码:这是我的代码:
var sut: ViewController!
override func setUpWithError() throws {
super.setUp()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
sut = storyboard.instantiateViewController(withIdentifier: "ViewController") as? ViewController
sut.loadViewIfNeeded()
}
func testGenderButton_ShouldUpdateValueWhenPressed() {
sut.genderSwitch.isOn = true
sut.genderSwitch.sendActions(for: .valueChanged)
XCTAssertEqual(sut.genderSwitch.isOn, false, "\(sut.genderSwitch.isOn) should be equal to false")
}
不要测试它。 UISwitch 不能是被测对象!单元测试针对的是逻辑,而不是接口,此外,UISwitch 不是您的代码——它是 Apple 的类,您已经知道它的行为方式。