带有 sendActions 的 UISwitch 单元测试(对于:.valueChanged)

问题描述 投票:0回答:1

目标: 我目前正在对按下 UISwitch 时的行为进行单元测试。

问题: 我的问题是我用来以编程方式更改 UISwitch 状态的

sendActions(for: .valueChanged)
没有像我想象的那样工作。它不会使它从
false
变为
true
(在我的示例中)。

我做了什么?: 我正在使用以下路径:

  1. 我将我的 UISwitch 声明为
    true
  2. 我用
    sendActions(for: .valueChanged)
    把它改成
    false
  3. 我终于使用了
    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")
    }
swift unit-testing uikit uiswitch xctestcase
1个回答
1
投票

不要测试它。 UISwitch 不能是被测对象!单元测试针对的是逻辑,而不是接口,此外,UISwitch 不是您的代码——它是 Apple 的类,您已经知道它的行为方式。

© www.soinside.com 2019 - 2024. All rights reserved.