2014-07-23 4 views
1

저는 아이폰 앱 개발에 새로운 것이므로 일부 단위 테스팅부터 시작합니다. 사소한 질문이라면 실례합니다. 내가 텍스트 필드에 대한 다음 코드를했다유닛 테스팅 UITextField 메소드

, XCTest와 위의 메소드를 호출하는 방법

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    //Check whether currently editing text field is a account name text field 
    if([[_customCellObjects objectAtIndex:0] textField] == textField) { 
     NSUInteger newLength = [[[_customCellObjects objectAtIndex:0] textField].text length] + [string length] - range.length; 

     //Return NO(Non Editable) if the account name text field exceeds more than 50 characters 
     return (newLength > 50) ? NO : YES; 
    } 
    else { 
     //Return YES(Editable) for the other text fields 
     return YES; 
    } 
} 

? 매개 변수를 전달하는 방법은 무엇입니까?

답변

1

UITableViews에 대한 작업은 속성으로 테이블보기를 노출 한 다음 대리인/데이터 소스 함수를 직접 호출하고 원하는 출력을 확인합니다.

는 귀하의 경우에 당신은 _customCellObjects

YourViewController *vc = [[YourViewController alloc] init]; 
bool result = [vc textField:vc.textField shouldChageCharactersInRange:NSMakeRange(0,1) replacementString: "a"]l 

XCTAssertTrue(result); 

나는이 불필요하게 UITextField에 노출 (또는 jQuery과) 약 좋아하지 않는 유일한 것은 [[_customCellObjects objectAtIndex:0] textField]를 반환하는 텍스트 필드] 속성을 만들거나 노출 것입니다. 그러나 다른 사람들은 더 나은 옵션을 게시 할 수 있습니다.

+0

테스트 클래스의 setup()에 어떤 것을 추가해야합니까? 오류 메시지가 나타납니다. " 'TextField'속성이 'AddEditRecordViewController *'유형의 개체에 없습니다." 제안 해주세요. – vasanth

+0

나는 지금 원하는 출력을 얻었습니다. 정말 고마워요. 나는 customcellObjects와 또 다른 detailView 클래스의 인스턴스를 만들었습니다. 보석처럼 작동했습니다. – vasanth

+0

확실한 것 - 이것이 당신의 문제를 옳은 것으로 표시하면 다른 사람들이 답을 알고 있음을 알 수 있습니다. – ansible