[英]How to add tap action for button in “Unit Testing” and show Alert
我正在尝试为我的登录表单编写一个单元测试用例,如果用户名和密码为空,则单击登录按钮,它将显示警报,我要针对这种情况编写测试用例,对我来说按钮操作不起作用并且警报未显示与单元测试,我正在寻找解决方案很长时间,任何人都可以帮助..谢谢!
首先,让我说,除了警告以外,您可以考虑禁用“登录”按钮,直到“用户名”和“密码”不为空为止。
但是要回答你的问题:
sendActions(for: .touchUpInside)
在出现任何警报之前,导入ViewControllerPresentationSpy并在测试中创建AlertVerifier:
let alertVerifier = AlertVerifier()
然后,调用可能会或可能不会发出警报的触发器。 您的情况是按钮上的.touchUpInside
。
您现在可以调用verify
方法:
func test_tappingLoginButton_shouldPresentAlert() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let sut = storyboard.instantiateInitialViewController() as! ViewController
sut.loadViewIfNeeded()
let alertVerifier = AlertVerifier()
sut.loginButton.sendActions(for: .touchUpInside)
alertVerifier.verify(
title: "Title",
message: "Message",
animated: true,
presentingViewController: sut,
actions: [
.default("OK"),
]
)
}
要测试未显示警报,请使用
XCTAssertEqual(alertVerifier.presentedCount, 0)
要调用动作,请执行以下操作:
func test_showAlertThenTapOKButton() throws {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let sut = storyboard.instantiateInitialViewController() as! ViewController
sut.loadViewIfNeeded()
let alertVerifier = AlertVerifier()
try alertVerifier.executeActions(forButton: "OK")
// Check for expected results
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.