1

最善の方法ではありませんが、オブジェクトのプライベートメソッドが呼び出されていることを確認したいので、部分的なモックを作成し、プライベートメソッドに期待値を追加します。

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

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

テストを実行すると、cleanupPreviousContentsは呼び出されませんが、テストは引き続き成功します。バグはどこにありますか?

よろしく、クエンティン

4

1 に答える 1

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];
于 2012-01-02T19:05:54.647 に答える