如何编写按钮点击的单元测试?

Dam*_*dar 6 ios xctest swift xctestcase

在这里,我尝试检查视图控制器的单元测试用例。- 我有一个带有按钮和标签的视图控制器。- 当您单击按钮时,它将调用另一个方法。它将数据提供给按钮操作标签文本更改。
- 我想检查该按钮是否触发了该方法?无需添加函数的任何布尔值或返回类型。

这是我的代码。

class ViewController: UIViewController {

    @IBOutlet weak var buttonFetch: UIButton?

    @IBOutlet weak var nameLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func fetchUser() {
        self.nameLabel.text = self.getUser()
    }

    func getUser() ->String {
        return User.data()
    }
}

struct User  {
    static func data()->String{
        return "Apple"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试用例

func testFetchUserAction() {
        controller.buttonFetch?.sendActions(for: .touchDown)
        // I want to test the method getUser from viewcontroller gets called or not
        // some thing like this XCTAssert(self.controller.getUser(),"not called")
        XCTAssertEqual(self.controller.nameLabel.text!, "Apple")

    }
Run Code Online (Sandbox Code Playgroud)

小智 1

在另一个回复中发现类似的内容,尝试过类似的事情吗?来源:如何在“单元测试”中为按钮添加点击操作并显示警报

func testTappingLoginButton_ShouldPresentAlert() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let sut = storyboard.instantiateInitialViewController() as! ViewController
    sut.loadViewIfNeeded()
    let alertVerifier = QCOMockAlertVerifier()

    sut.loginButton.sendActions(for: .touchUpInside)

    XCTAssertEqual(alertVerifier.presentedCount, 1)
}
Run Code Online (Sandbox Code Playgroud)

让我知道它是否有效!