繁体   English   中英

如何在“单元测试”中为按钮添加点击动作并显示警报

[英]How to add tap action for button in “Unit Testing” and show Alert

我正在尝试为我的登录表单编写一个单元测试用例,如果用户名和密码为空,则单击登录按钮,它将显示警报,我要针对这种情况编写测试用例,对我来说按钮操作不起作用并且警报未显示与单元测试,我正在寻找解决方案很长时间,任何人都可以帮助..谢谢!

首先,让我说,除了警告以外,您可以考虑禁用“登录”按钮,直到“用户名”和“密码”不为空为止。

但是要回答你的问题:

  • 要测试按钮动作,单元测试可以调用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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM