使用partialMockForObject来执行单例类模拟,如何创建一个像“removeAllExpectations”这样的方法来删除所有记忆的?

时间:2011-12-19 02:26:58

标签: singleton ocmock

在OCMock上为单身人士感到困惑,得到两种方法,但在我看来,这些方法都不完美。

  1. 使用partialMockForObject。 我想使用partialMockForObject来做单例类mock。看下面的代码,它运行良好,但缺点是单例[NSNotificationCenter defaultCenter]会记住以前的模拟行为,然后在另一个地方调用时,它会崩溃,意外。所以我的问题是如何创建一个像“removeAllExpectations”这样的方法来删除所有记住的方法?

    id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];

    [aMock expect] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewController class]]];

    [[aMock verify];

  2. 使用类别方法。请参阅http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/提到另一种做单例模拟的方法,我个人更喜欢partialMockForObject,你不需要在单元测试时模拟所有方法。

  3. 已将我的问题发送给OCMock开发小组,但尚无响应,需要您的聪明人的意见。任何想法或讨论将不胜感激,提前感谢。

2 个答案:

答案 0 :(得分:4)

如果您正在使用OCMock的最新源代码(之后 2012-04-06),致电

[aMock stopMocking];

重置模拟对象的状态。

答案 1 :(得分:1)

您可以致电:

[aMock stop];

重置模拟对象的状态。