是否有可能从部分模拟中“预期”一种方法

时间:2011-12-29 14:52:12

标签: ocmock

这不是最好的事情,但我想验证一个对象的私有方法被调用,所以我创建了一个局部模拟并在私有方法上添加了一个期望。

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

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

当我运行测试时,不调用cleanupPreviousContents但测试仍然成功。错误在哪里?

此致 昆汀

1 个答案:

答案 0 :(得分:7)

是的,这是完全有效的事情。但是你需要为你的部分模拟创建一个新的引用:

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

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

... do something

[mockSync verify];

cleanupPreviousContents方法中是否initWithCleanup被调用了?如果是这样,你将不得不以不同的方式构建它:

Synchronizer *sync = [Synchronizer alloc];

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

[sync initWithCleanup:YES];

[mockSync verify];