Можно ли «ожидать» метод от частичного макета? - PullRequest
1 голос
/ 29 декабря 2011

Это не лучшая вещь, но я хотел бы проверить, что частный метод объекта вызывается, поэтому я создаю частичную имитацию и добавляю ожидание для частного метода.

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

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

Когда я запускаю тест, cleanupPreviousContents не вызывается, но тест все еще успешен. Где ошибка?

С уважением, Квентин

1 Ответ

7 голосов
/ 02 января 2012

Да, это совершенно правильно. Но вам нужно создать новую ссылку для вашего частичного макета:

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];
...