在OCMStub/OCMExpect/OCMReject中没有记录调用



我试图在我的一个单元测试中模拟一个Singleton类。我创建mock的方式如下:

MySingletonController *mockController = OCMClassMock([MySingletonController class]);
OCMStub([MySingletonController sharedController]).andReturn(mockController);
我得到的完整错误是:
Did not record an invocation in OCMStub/OCMExpect/OCMReject.
Possible causes are:
- The receiver is not a mock object.
- The selector conflicts with a selector implemented by OCMStubRecorder/OCMExpectationRecorder. (NSInternalInconsistencyException).
需要提及的重要一点是,共享实例并不是实例化类的东西,它只是返回一个变量。该变量在nib加载期间的init(发生)中被赋值。但我真的怀疑这与问题有关。

我不完全清楚是什么导致了我所看到的OCM错误。

第二行如下:

OCMStub([mockController sharedController]).andReturn(mockController);

问题是我如何声明OCMStub。我的sharedController方法是一个class方法。然后需要对OCMStub进行不同的声明。

MySingletonController *mockController = OCMClassMock([MySingletonController class]);
OCMStub(ClassMethod([(id)mockController sharedController])).andReturn(mockController);

按上述方法修改代码后,测试开始正常工作。

相关内容

  • 没有找到相关文章

最新更新