2014-02-20 3 views
0

블록에서 어서 트를 사용하는 방법에 대한 질문이 있습니까? 예를 들어블록에서 Assert를 사용하는 방법은 무엇입니까?

:

[someObject postRequestWithBlock:^(BOOL succeeded, NSError *error) { 

    CFRunLoopRef runLoopRef = CFRunLoopGetCurrent(); 
    CFRunLoopStop(runLoopRef); 

    GHAssertTrue(succeeded&&!error, @"faile"); 

}]; 
CFRunLoopRun(); 

그것은 비동기 요청을 전송해야합니다. 완료되면 성공했는지 확인해야합니다.

하지만 충돌이 발생합니다!

어떻게해야합니까?

xx!

추 신 : - (void) testCase { [자가 준비];

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]; 

__block typeof (&*self) bself = self; 

[request setCompletionBlock:^{ 

    [bself notify:kGHUnitWaitStatusSuccess forSelector:@selector(testCase)]; 
    GHAssertTrue(YES, @"faile"); 
}]; 

[request setFailedBlock:^{ 

    [bself notify:kGHUnitWaitStatusFailure forSelector:@selector(testCase)]; 
    GHAssertTrue(NO, @"faile"); 
}]; 

[request startAsynchronous]; 

[self waitForStatus:kGHUnitWaitStatusCancelled timeout:15.0]; 

}

+0

완료가 거짓이고 오류가 true라고 주장하고 싶지 않으십니까? 당신은 다른 방향으로 그들을 가지고 있습니다. –

답변

0

async section of the docs 봐 (ExampleAsyncTest.m:에서 주로 비트)가 있습니다. 뭔가 같이 :

-(void)testCase 
{ 
    [someObject postRequestWithBlock:^(BOOL succeeded, NSError *error) { 

     [self notify:succeeded ? kGHUnitWaitStatusSuccess : kGHUnitWaitStatusFailure forSelector:@selector(testCase)]; 

     GHAssertTrue(succeeded&&!error, @"faile"); 

    }]; 

    [self waitForStatus:kGHUnitWaitStatusSuccess timeout:10.0];  
} 

나도 그있어 좋은 깨끗한 구문을 Expecta 테스트 프레임 워크를 추천 할 것입니다.

+0

도움 주셔서 대단히 감사합니다 !!! 하지만 아직 여기 있습니다. 문제가 있습니다. 이 블록의 Assert가 충돌하면 충돌이 발생합니다. 내 블록이 문제가 되나요? – user3332433