2011-12-29 54 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

相关问题