我正試圖在我的一個單元測驗中模擬一個Singleton類。我創建模擬的方式是這樣的:
MySingletonController *mockController = OCMClassMock([MySingletonController class]) 。
OCMStub([MySingletonController sharedController]).andReturn(mockController)。
我得到的完整的錯誤是:
沒有記錄一個呼叫 in OCMStub/OCMExpect/OCMReject。
可能的原因是。
- 接收者不是一個模擬物件。
- 該選擇器與OCMStubRecorder/OCMExpectationRecorder實作的選擇器沖突。(NSInternalInconsistencyException) 。
需要提及的一件事是,共享實體不是實體化類的東西,它只是回傳一個變數。該變數是在nib加載程序中的init(發生)期間分配的。但我真的懷疑這與問題有關。
我并不完全了解什么會導致我所看到的OCM錯誤。
uj5u.com熱心網友回復:
第二行應該是這樣的:
OCMStub([mockController sharedController]).andReturn(mockController)。
uj5u.com熱心網友回復:
問題在于我是如何宣告OCMStub的。我的sharedController方法是一個class方法。那么它需要為OCMStub進行不同的宣告。
MySingletonController *mockController = OCMClassMock([MySingletonController class])。
OCMStub(ClassMethod([(id)mockController sharedController]).andReturn(mockController)。
在對我的代碼進行上述修改后,測驗開始正常運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307426.html
標籤:
下一篇:將CFData轉換為C-字串
