对单例的 OCMock 感到困惑,获得两种方法,但在我看来它们都不是完美的。
使用 partialMockForObject。我想使用 partialMockForObject 来做单例类模拟。看下面的代码,效果很好,但是缺点是单例 [NSNotificationCenter defaultCenter] 会记住之前的 mock 行为,然后在另一个地方调用时,它会崩溃,出乎意料。所以我的问题是,我怎样才能创建一个像“removeAllExpectations”这样的方法来删除所有记住的?
id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];
[aMock 期望] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewController 类]]];
[[模拟验证];
使用分类法。见http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/提到了另一种做单例模拟的方法,我个人更喜欢partialMockForObject,单元测试时不需要模拟所有方法。
已将我的问题发送给 OCMock 开发组,但尚未收到回复,需要您的聪明人的意见。任何想法或讨论将不胜感激,在此先感谢。