未在 OCMStub/OCMExpect/OCMReject 中记录调用
Did not record an invocation in OCMStub/OCMExpect/OCMReject
我正试图在我的一个单元测试中模拟单例 class。我创建模拟的方式是这样的:
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).
需要提及的一件重要事情是共享实例不是实例化 class 的东西,它只是 returns 一个变量。该变量是在 nib 加载期间的初始化(发生)期间分配的。但我真的怀疑这与问题有关。
我不完全知道是什么导致了我看到的 OCM
错误。
第二行应该如下:
OCMStub([mockController sharedController]).andReturn(mockController);
问题是我如何声明 OCMStub
。我的 sharedController
方法是 class
方法。然后需要为 OCMStub
.
声明不同的内容
MySingletonController *mockController = OCMClassMock([MySingletonController class]);
OCMStub(ClassMethod([(id)mockController sharedController])).andReturn(mockController);
按上述方式更改我的代码后,测试开始正常运行。
我正试图在我的一个单元测试中模拟单例 class。我创建模拟的方式是这样的:
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).
需要提及的一件重要事情是共享实例不是实例化 class 的东西,它只是 returns 一个变量。该变量是在 nib 加载期间的初始化(发生)期间分配的。但我真的怀疑这与问题有关。
我不完全知道是什么导致了我看到的 OCM
错误。
第二行应该如下:
OCMStub([mockController sharedController]).andReturn(mockController);
问题是我如何声明 OCMStub
。我的 sharedController
方法是 class
方法。然后需要为 OCMStub
.
MySingletonController *mockController = OCMClassMock([MySingletonController class]);
OCMStub(ClassMethod([(id)mockController sharedController])).andReturn(mockController);
按上述方式更改我的代码后,测试开始正常运行。