2011-12-29 105 views
1

這不是最好的事情要做,但我想驗證一個對象的私有方法被調用,所以我創建了一個部分模擬並添加了一個對私人方法的期望。是否有可能'期望'從部分模擬的方法

Synchronizer * sync = [[Synchronizer alloc] initWithCleanup:YES]; 

sync = [OCMockObject partialMockForObject:sync]; 
[[(id)sync expect] cleanupPreviousContents];  

當我運行測試時,不會調用cleanupPreviousContents,但測試仍然成功。錯誤在哪裏?

問候, 昆汀

回答

7

是的,這是做一個完全有效的事情。但是,你需要爲你的部分模擬創建一個新的參考:

Synchronizer * sync = [[Synchronizer alloc] initWithCleanup:YES]; 

id mockSync = [OCMockObject partialMockForObject:sync]; 
[[mockSync expect] cleanupPreviousContents]; 

... do something 

[mockSync verify]; 

就是所謂的initWithCleanup方法中cleanupPreviousContents?如果是這樣,你將不得不構建它有點不同:

Synchronizer *sync = [Synchronizer alloc]; 

id mockSync = [OCMockObject partialMockForObject:sync]; 
[[mockSync expect] cleanupPreviousContents]; 

[sync initWithCleanup:YES]; 

[mockSync verify]; 
+0

哦,分裂的alloc/init的很好的例證! :) – buildsucceeded 2016-06-23 13:33:14

相關問題