2014-04-01 6 views
0

저는 BDD를 연습하고 있습니다. 나는 QuuxToBazTransformer이되도록 핵심 데이터 모델 편집기를 사용하여 지정 한 quux이라는 변형 가능한 특성을 포함하는 Foobar이라는 엔티티가 있습니다. 요점은 QuuxToBazTransformer이 존재하지 않는다는 것입니다. 핵심 데이터가 내 테스트에 실패하고 구현해야한다고 말해야합니다.어떻게 CoreData 경고를 캡처 할 수 있습니까?

놀랍게도, 테스트 통과 : 내 Foobar 저장 된 것으로 나타나고 코어 데이터 만 경고로 나에게 말한다 :

xctest[99290:303] CoreData: warning: no NSValueTransformer with class name 
'QuuxToBazTransformer' was found for attribute 'quux' on entity 'Foobar' 

어떻게이 경고를 캡처하고 그것을 내 테스트 실패 할 수 있습니까?

답변

0

나는 그 경고를 포착 할 수 있는지 모른다. 그래도 값 변환기의 존재 여부를 테스트 할 수 있습니다.

  1. entitiesByName 메서드를 사용하여 모델의 모든 엔티티 목록을 가져옵니다.
  2. 이전 단계에서 반환 된 사전의 해당 엔티티에 대해 NSEntityDescription을 찾습니다.
  3. attributesByName을 사용하여 엔터티 설명의 모든 특성을 가져옵니다.
  4. 값 변환 자 클래스의 이름을 valueTransformerName을 사용하여 NSAttributeDescription에있는 속성에서 가져옵니다.
  5. NSClassFromString을 사용하여 값 변환기 클래스의 존재를 확인하십시오. 값 변압기 클래스가 존재하는 경우,이 단계에서 nil이 아닌 결과를 얻을 수 있습니다

5.

또한 검증 모든 값 변압기를 찾는 일반적인 검사로이를 구현할 수

그들 모두. 이를 수행하려면 entitiesByName이 반환 한 모든 엔터티를 반복 한 다음 attributesByName이 반환하는 모든 특성 (이름으로 알려진 엔터티 및 특성을 찾는 대신)을 반복하면됩니다. 가치 변압기를 발견 할 때마다, 클래스가 존재하는지 (그리고 아마도 그것은 하위 클래스 NSValueTransformer) 테스트가 통과해야 하는지를 결정하십시오.

관련 문제