비동기 코드에 TDD를 적용하는 동안 배포 대상에서 작동하는 동일한 코드가 테스트 대상에서 작동하지 않는다는 것을 알았습니다.테스트 대상 및 배포 대상에서 비동기 코드의 다른 동작
- (void)testReceivingLocation
{
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
locationManager.pausesLocationUpdatesAutomatically = NO;
if ([CLLocationManager locationServicesEnabled])
{
[locationManager startUpdatingLocation];
}
startLocation = nil;
NSDate *until = [NSDate dateWithTimeIntervalSinceNow:10];
while ([until timeIntervalSinceNow] > 0)
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:until];
}
XCTAssert(alreadyReceivedLocation, @"Location wasn't received.");
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
alreadyReceivedLocation = true;
// Never actually get there.
}
무슨 문제가 될 수있다 :이 문제의 예 하나는 내가 CLLocationManager를 사용하여 발견?
감사합니다! 내가 사용하는 특정 메서드로 질문을 업데이트하고 sleep() 대신 코드를 사용하려고했습니다. 불행히도, 아무 것도 바뀌지 않았습니다 ... – Sergey
Ah, CLLoactionManager 시뮬레이터에서 위치 업데이트가 없다고 생각합니다. GPS 수정 프로그램이있는 장치에서 테스트를 실행할 수 있습니까? CLLocationManager는 시뮬레이터에서 약간 다르게 동작합니다. – sofacoder