首页 > 解决方案 > 如何在 ObjC 中测试 IBAction 和选择器

问题描述

我对如何创建单元测试来验证调用 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];
}

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

标签: iosobjective-cxcode

解决方案


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

[[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 或选择器的正确方法。


推荐阅读