2012-08-05 4 views
1

Automapper.Mapper.Map<T1,T2>()을 사용할 때마다 내 부트 스트 래퍼에 해당 매핑 구성 (AutoMapper.Mapper.CreateMap<T1,T2>())이 있는지 확인하는 테스트를하고 싶습니다.automapper 매핑이 모든 용도로 생성되었는지 확인하는 방법은 무엇입니까?

Roslyn을 사용하여 컴파일러와 인터페이스하고 Map<> 메서드의 모든 용도를 찾은 다음 해당 인스턴스를 사용하여 매핑하려고했습니다. 그 트릭을 할 것이지만, 나는 이미 존재하는 것을 사용하고 싶습니다.

존재합니까? 그렇지 않다면, Roslyn보다 이것을 할 수있는 더 좋은 방법이 있습니까?

답변

1

당신은 깊은 메타 프로그래밍에 너무 밟고 있습니다.

매핑 된 클래스를 하나 이상의 네임 스페이스에 포함하고 이러한 네임 스페이스의 모든 클래스에 대한 매핑이 있는지 확인하는 것이 가장 좋습니다. 이를 위해 Roslyn, Cecil 또는 그와 같은 것이 필요하지 않습니다.

컴파일 타임 검사를 포기하는 경우 적어도 일부 규칙을 지정해야하며 규칙이 잘 정의되어 있으면이를 확인할 수 있어야합니다.

+0

+1 [확인과 함께 할 수있는 일례] (http://stackoverflow.com/questions/11452539/generalised-func-wrapping-with-anonymous-values-equivalent-to-autofixture-/11455580 # 11455580 포함) –

0

문제는 당신이 확신 할 수 없다 -.이 결정이 아니다의 경우 부하가 (유형 Y의 모델가 object에 풀이 죽은 AutoMapper에 전달 될 수있다 예를 들어

당신은 실제의 범위를

제공해야 일반 코드 커버리지의 일환으로 매핑의 소비. 그 모든 매핑 방법에 대한 단위 테스트가 다른 질문을 의미하든

...

관련 문제