2014-02-13 5 views
0

바보 같은 문제가 있습니다. 저는 코코아에 대한 테스트를 시작했습니다. NSArrayNSRange을 요소로 반환하는 메서드를 테스트하고 싶습니다. 이 건물의 위치는 ID 타입의 객체를 찾을 수 없기 때문에테스트에서 NSRange를 전송 하시겠습니까?

XCTAssert(ranges[0].location == 500, @"Value found is wrong");

이 실패하지만, 나도 그 구조체이기 때문에 (NSRange) 캐스팅 수 없습니다.

내 샘플 배열 :

<__NSArrayM 0x600000050680>( NSRange: {500, 101} )

가 어떻게이 배열에 대한 가치 테스트 할 수 있습니까? NSRange으로

답변

1

: 오류 로그에서 예상과 실제 값을 모두 보게으로, 여전히 더 나은

XCTAssert([ranges[0] rangeValue].location == 500, @"Value found is wrong"); 

또는 :이 작업을 완료하면

, 테스트가된다 NSRange은 배열 내부에 NSValue 안에 있어야하므로 location에 액세스하기 전에 범위를 추출해야합니다.

NSValue *value = (NSValue *)ranges[0]; 
NSRange range = [value rangeValue]; 

XCTAssert(range.location == 500, @"Value found is wrong"); 
+0

@vikingosegundo @vikingosegundo :-) – Wain

3

은 당신이 목표 - C 컬렉션 클래스에 저장할 수 없습니다, 오브젝티브 C 객체없는, 그래서는 NSValue 객체로 포장해야합니다.

[NSValue valueWithRange:]을 참조하십시오.

XCTAssertEqual([ranges[0] rangeValue].location, 500, @"Value found is wrong"); 
관련 문제