OCMock 部分模拟拆卸问题

OCMock partial mock tear down issue

我做了一个部分模拟,一个测试按预期运行,但对于第二个测试,它连续调用 setUp 和 teardown 而没有调用实际测试。

- (void)setUp {
  [super setUp];
  _reachability = [Reachability reachabilityForInternetConnection];
  _reachabilityMock = [OCMockObject partialMockForObject:_reachability];
  [[[_reachabilityMock expect] andReturn:_reachabilityMock]
      reachabilityForInternetConnection];
}

- (void)tearDown {
  [_reachabilityMock stopMocking];
  _reachability = nil;
  _reachabilityMock = nil;
  [super tearDown];
}

#pragma mark - Tests

- (void)testWifiReachability {
  [[[self.reachabilityMock stub] andReturnValue:@(ReachableViaWiFi)]
      currentReachabilityStatus];
  XCTAssertTrue([Reachability pckHasWifiConnection]);
}

- (void)testNoReachability {
  [[[self.reachabilityMock stub] andReturnValue:@(NotReachable)]
      currentReachabilityStatus];
  XCTAssertFalse([Reachability pckHasWifiConnection]);
}

我是 ocmock 的新手,有人可以帮助我吗?谢谢!

Reachability 是免费桥接 class,因此部分模拟不适用于您的情况。 来自 http://ocmock.org/features/ 中的 ocmock 文档:

Note that currently partial mocks cannot be created for instances of toll-free bridged classes, e.g. NSString.