2013-05-02 80 views
3

這是關於OCMock期望的一個非常基本的問題。讓我們在objectA上有一個實例方法methodA,它調用objectA上的實例方法methodB。OCMock期望在另一種方法中調用方法

- (void)methodA { 
    [self methodB]; 
} 

- (void)methodB { 
    ... 
} 

現在,假設我想驗證objectA的部分模擬調用methodA和methodB。這似乎是所有你應該做的是:

- (void)test { 
    id mockObjectA = [OCMockObject partialMockForObject:self.objectA]; 
    [[mockObjectA expect] methodA]; 
    [[mockObjectA expect] methodB]; 

    [self.objectA methodA]; 

    [mockObjectA verify]; 
} 

當我運行測試,它認爲是了methodA成功調用但的methodB沒有成功調用。我誤解了什麼?

感謝您的幫助。

回答

4

您需要告訴模擬器將方法調用轉發給實際對象,以便實現實際運行。

[[[mockObjectA expect] andForwardToRealObject] methodA]; 
+0

光榮,謝謝!看起來我需要更仔細地閱讀文檔。順便說一句,可能想對你的答案做一個輕微的修改,以供將來的人使用:'[[[[mockObjectA expect] andForwardToRealObject] methodA];' – 2013-05-02 21:26:22

+0

謝謝,我更新了答案! – 2013-05-02 21:39:43

相關問題