我正在尝试测试完成关卡后计时器对象是否停止。我有以下代码:
-(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)失败。最终出现在 Game-0x12383060 的子类转发器中......”
那么,是不是不可能把现有的方法存根,然后用虚无来代替呢?