【发布时间】:2012-08-20 19:23:04
【问题描述】:
我正在尝试测试一个计时器对象在关卡完成后是否停止。我有以下代码:
-(void)advanceLevel {
int nextLevelId = self.currentLevel.id + 1;
self.currentLevel = [[Level alloc] initWithIdentifier:nextLevelId];
[self.timer stop];
[self prepareLevel];
}
...
prepareLevel 方法重置计时器值并在其上调用“start”--- 所以为了测试advanceLevel 实际停止计时器,我需要覆盖prepareLevel 方法。
所以在我的单元测试中,我做了以下事情:
-(void)testItStopsTheTimer {
[timer start];
id mockGame = [OCMockObject partialMockForObject:game];
[[[mockGame stub] andReturn:nil] prepareLevel];
[game advanceLevel];
STAssertFalse(timer.active, nil);
}
这导致 XCode 说“testItStopsTheTimer (Gametests) failed. Ended up in subclass forwarder for Game-0x12383060.......”
那么,是不是不能把现有的方法存根,然后用虚无代替呢?
【问题讨论】:
标签: objective-c ocunit ocmock