ios – 可以测试IBAction吗?

前端之家收集整理的这篇文章主要介绍了ios – 可以测试IBAction吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对IBOutlets进行单元测试有点容易,但IBActions呢?我试图找到一种方法,但没有任何运气.有没有办法在View Controller中的IBAction和nib文件中的按钮之间进行单元测试连接?

解决方法

对于完整的单元测试,每个插座/操作需要三个测试:

>插座是否连接到视野?
>插座是否与我们想要的动作相关联?
>直接调用操作,就像它已被插座触发一样.

我一直这样做TDD我的视图控制器.您可以看到示例in this screencast.

听起来你在具体询问第二步.这是一个单元测试的例子,用于验证myButton内部的修饰是否会调用doSomething:这是我用OCHamcrest表达的方式.(sut是被测系统的测试夹具.)

- (void)testMyButtonAction {
    assertThat([sut.myButton actionsForTarget:sut
                              forControlEvent:UIControlEventTouchUpInside],contains(@"doSomething:",nil));
}

或者,这是一个没有Hamcrest的版本:

- (void)testMyButtonAction {
    NSArray *actions = [sut.myButton actionsForTarget:sut
                              forControlEvent:UIControlEventTouchUpInside];
    XCTAssertTrue([actions containsObject:@"doSomething:"]);
}

猜你在找的iOS相关文章