ボタンのクリックが発生したときに位置情報サービスが開始されることを確認するためのテストを作成しています。これには、電話に位置情報サービスが利用可能であることを確認するための非常に単純なifステートメントが必要です。
現在の作業テストは次のようになります
- (void)testStartUpdatingLocationInvokedWhenLocationServicesAreEnabled
{
[[[self.locationManager stub] andReturnValue:[NSNumber numberWithBool:true]] locationServicesEnabled];
[[self.locationManager expect] startUpdatingLocation];
[self.sut buttonClickToFindLocation:nil];
[self.locationManager verify];
}
現在テストされている実装は次のようになります
- (IBAction)buttonClickToFindLocation:(id)sender
{
if ([self.locationManager locationServicesEnabled])
{
[self.locationManager startUpdatingLocation];
}
}
このメソッドがiOS4.0で非推奨になったことを除いて、すべて問題ありません。そのため、代わりにクラスメソッド[CLLocationManagerlocationServicesEnabled]を使用する必要があります。
問題は、ocmockがこの機能をサポートしているかどうかがわからないようで、サポートしていない場合は、今のところこの問題をどのように回避する必要があるかです。