在OCMock上为单身人士感到困惑,得到两种方法,但在我看来,这些方法都不完美。
使用partialMockForObject。 我想使用partialMockForObject来做单例类mock。看下面的代码,它运行良好,但缺点是单例[NSNotificationCenter defaultCenter]会记住以前的模拟行为,然后在另一个地方调用时,它会崩溃,意外。所以我的问题是如何创建一个像“removeAllExpectations”这样的方法来删除所有记住的方法?
id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];
[aMock expect] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewController class]]];
[[aMock verify];
使用类别方法。请参阅http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/提到另一种做单例模拟的方法,我个人更喜欢partialMockForObject,你不需要在单元测试时模拟所有方法。
已将我的问题发送给OCMock开发小组,但尚无响应,需要您的聪明人的意见。任何想法或讨论将不胜感激,提前感谢。
答案 0 :(得分:4)
如果您正在使用OCMock的最新源代码(之后 2012-04-06),致电
[aMock stopMocking];
重置模拟对象的状态。
答案 1 :(得分:1)
您可以致电:
[aMock stop];
重置模拟对象的状态。