2012-07-05 21 views
0

我對OCMockObject的「驗證」方法感到困惑,是否有必要調用此方法來測試模擬對象上是否調用了方法?即使在測試執行後我實際上沒有調用「驗證」,如果我沒有完全設定在模擬對象上調用方法的期望,我仍然會得到測試失敗。OCMock - 是否需要調用「verify」來聲明在模擬對象上調用某個方法?

例如:

在測試方法

OCMockObject *mockView = [OCMockObject mockForClass:[UIView class]]; 
[controller setValue:mockView forKey:@"sampleView"]; 
[[mockView expect] setHidden:YES]; 
[controller processSampleView]; 
//do I need to call "verify" here? 
// If I don't, I still get test failures if "setHidden:YES" is not called... 
[mockView verify]; 

回答

2

在OCMock站點的功能描述了這一點:

「的驗證方法將引發異常,如果預期的方法有沒有被調用。「

和這樣的:

「當一個方法被調用尚未建立與任何期望或存根模擬對象將引發異常的模仿對象。此快速失敗的模式可以打開通過創建一個「很好」的模擬關閉:「

所以,是的,當您調用意外的方法時會引發異常。但是,上面的示例表明,即使未調用驗證,也不會調用預期的方法時會引發異常。這似乎不可能,因爲如果不調用驗證,則沒有到OCMock的代碼路徑。在你的情況下,從哪裏引發異常,例如什麼是異常的堆棧跟蹤?是否有可能在另一個調用驗證的測試中重用模擬視圖? 控制器實例是否停留在兩次測試之間?

相關問題