如何在ObjC中测试IBAction和Selector?

我很困惑,如何创建一个单元测试来验证IBAction方法是否被调用,同时也测试一个选择器。

例如,我有这样的代码。

- (IBAction)tapButton:(UITapGestureRecognizer *)sender {
       //do something 
 }

这段代码是针对选择器的

[button addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside];

- (void)tapButton:(id)sender {
       //do something
}

我有这个单元测试。

- (void)test_tapAction {
   ClassView *view = [ClassView alloc] init];
   id mock = [OCMockObject partialMockForObject:view];
   [[mock expect] tapButton:[OCMArg any]];
   [mock tapButton:[OCMArg any]];
   OCMVerify([mock tapButton:[OCMArg any]]);
   [mock stopMocking];
}

但我不确定这是正确的方法。

解决方案:

我得到了解决方案,关于测试的代码还不错,但是这一行有一个错误。

[[mock expect] tapButton:[OCMArg any]];

这一行没有调用我想测试的方法。

  • (IBAction)tapButton:(UITapGestureRecognizer *)sender。

总之,关于单元测试的代码是这样的。

- (void)test_tapCreditsAction {
   ClassView *view = [ClassView alloc] init];
   id mock = [OCMockObject partialMockForObject:view];
   [mock tapButton:[OCMArg any]];
   OCMVerify([mock tapButton:[OCMArg any]]);
   [mock stopMocking];
  }

这是测试IBAction或选择器的正确方法。

给TA打赏
共{{data.count}}人
人已打赏
未分类

当保存字段标记为updatable=false的实体时,禁用警告 "实体已被修改,但不会更新,因为属性是不可改变的"。

2022-9-8 11:33:23

未分类

如何从用户输入的某个字典中随机选择。

2022-9-8 11:44:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索