2017-02-07 1 views
1

일부 엔티티를 인스턴스화하여 MongoDB에 저장하고 다시로드하여 매핑이 정확하게 작동하는지 테스트합니다. 테스트 클래스에서 @DataMongoTest 어노테이션을 사용하여 임베디드 MongoDB 인스턴스가 동적으로 생성되었는지 확인하고 싶습니다.@DataMongoTest에서 사용자 지정 변환기를 사용하는 방법은 무엇입니까?

일부 클래스의 경우 사용자 지정 변환기 (org.springframework.core.convert.converter.Converter)를 도입해야만 작업이 완료되었습니다. 이것들은 다음과 같이 설정됩니다 :

정상적인 (테스트 제외) 실행의 경우 이것은 정상적으로 작동합니다. 테스트에 내 구성을 사용하게하는 @SpringBootTest 주석을 사용하면 테스트가 작동합니다. 아쉽게도이 구성은 MongoDB의 호스트/포트를 정의하지만, @DataMongoTest에 의해 시작된 임베디드 MongoDB의 호스트/포트를 사용하고 싶습니다.

@DataMongoTest이 포함 된 MongoDB와 함께 사용자 지정 변환기를 사용하거나 구성 클래스를 인스턴스화하는 동안 포함 된 호스트/포트를 가져올 수 있도록 구성 할 수 있습니까?

답변

0

슬라이싱을 사용하는 경우 Mongo와 관련이없는 모든 검색이 비활성화됩니다. 우리는 SpringMongoSetup이 Mongo와 관련되어 있다는 것을 알 수있는 방법이 없습니다. 우리가 스캔하지 않기 때문에 적용되지 않습니다.

Mongo의 자동 구성에 의존하지 않으면 해당 클래스를 직접 가져와야합니다. @Import으로 할 수 있습니다 (예 :

@RunWith(SpringRunner.class) 
@DataMongoTest 
@Import(SpringMongoSetup.class) 
public class MyMongoTest { ... } 
+0

또한 'SpringMongoSetup'에서 구성된 호스트/ip도 사용합니다. ('AbstractMongoConfiguration'을 위해 필수적이기 때문에'@Override public Mongo mongo() {..}'부분을 생략했습니다 - 지금 편집했습니다) 다음에 의해 시작된 임베디드 MongoDB를 사용하려면 어떻게 대체 할 수 있습니까? '@ DataMongoTest'? –

관련 문제