这不是最好的事情,但我想验证一个对象的私有方法被调用,所以我创建一个局部模拟并在私有方法上添加一个期望.
Synchronizer * sync = [[Synchronizer alloc] initWithCleanup:YES];
sync = [OCMockObject partialMockForObject:sync];
[[(id)sync expect] cleanupPreviousContents];
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,不调用cleanupPreviousContents但测试仍然成功.这个bug在哪里?
问候,昆汀
是的,这是完全有效的事情.但是您需要为部分模拟创建一个新引用:
Synchronizer * sync = [[Synchronizer alloc] initWithCleanup:YES];
id mockSync = [OCMockObject partialMockForObject:sync];
[[mockSync expect] cleanupPreviousContents];
... do something
[mockSync verify];
Run Code Online (Sandbox Code Playgroud)
被cleanupPreviousContents
称为你的内initWithCleanup
法?如果是这样,你将不得不以不同的方式构建它:
Synchronizer *sync = [Synchronizer alloc];
id mockSync = [OCMockObject partialMockForObject:sync];
[[mockSync expect] cleanupPreviousContents];
[sync initWithCleanup:YES];
[mockSync verify];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1258 次 |
最近记录: |