如何为 "Unit Testing" 中的按钮添加点击操作并显示警报
How to add tap action for button in "Unit Testing" and show Alert
我正在尝试为我的登录表单编写一个单元测试用例,如果用户名和密码为空然后我们单击登录按钮它会显示警报,我想为这个场景编写测试用例,对我来说按钮操作不是工作和警报未显示单元测试,我正在寻找解决方案很长时间任何人都可以提供帮助..谢谢!
首先,我要说的是,在用户名和密码为 non-empty。
之前,您可以考虑禁用“登录”按钮而不是警报。
但是要回答你的问题:
- 要测试按钮操作,单元测试可以调用
sendActions(for: .touchUpInside)
- 要测试标准警报,请使用 ViewControllerPresentationSpy。
导入 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
}
我正在尝试为我的登录表单编写一个单元测试用例,如果用户名和密码为空然后我们单击登录按钮它会显示警报,我想为这个场景编写测试用例,对我来说按钮操作不是工作和警报未显示单元测试,我正在寻找解决方案很长时间任何人都可以提供帮助..谢谢!
首先,我要说的是,在用户名和密码为 non-empty。
之前,您可以考虑禁用“登录”按钮而不是警报。但是要回答你的问题:
- 要测试按钮操作,单元测试可以调用
sendActions(for: .touchUpInside)
- 要测试标准警报,请使用 ViewControllerPresentationSpy。
导入 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
}