私は、コア ロジックがプライベート メソッドにある多くの状況に遭遇しました。未知の/プライベートメソッドのコンパイルエラーを無視するためのコンパイル時の操作はありますか? コードの 2 番目の部分で performSelector を使用できることはわかっていますが、それは妥当な解決策でしょうか?
例えば:
[[self.objectMock expect] privateMethod];
or
[self.object callPrivateMethodsToExpectSomeOtherBehaviour]
編集:
いくつかのプライベート メソッドをテストする必要があると感じる理由を示す例を次に示します。これらのテストは合理的ではありませんか? clear を呼び出すと、実際にそれが想定していることを実際に実行することをテストするには、他にどのようにすればよいでしょうか?
- (void)clear
{
self.orderNumber = nil;
[self.items removeAllObjects];
// Clear the rest of fields
}
- (void)testClearShouldRemoveOrderNumber
{
Order *order = [[Order alloc] init];
OCMockObject *orderPartialMock = [OCmockObject partialMockForObject:order];
[[orderPartialMock.items expect] setOrderNumber:nil];
[orderPartialMock clear];
[orderPartialMock verify];
}
- (void)testClearShouldRemoveItems
{
Order *order = [[Order alloc] init];
order.items = [[OCMockObject niceMockForClass:[NSMutableArray class]];
[[orderPartialMock.items expect] removeAllObjects];
[orderPartialMock performSelector@selector(clear)];
[orderPartialMock.items verify];
}