표현식이있는 라우터를 사용하는 스프링 통합 경로가 있습니다. 이 표현식은 yml 파일에서 설정됩니다. 이 라우터 속성의 값을 수동으로 설정하는 단위 테스트를 만들고 싶지만 작동하지 않는 것 같습니다.프로그래밍 방식으로 스프링 통합 라우터 속성 설정
테스트
@Autowired
EventDrivenConsumer myrouter;
.....
((ExpressionEvaluatingRouter) myrouter.getHandler()).setPrimaryExpression(new SpelExpressionParser().doParseExpression("true"));
는 XML 컨텍스트의 일부
<int:router input-channel="catchweightExcluderChannel" expression="${rip.config.exclude_catchweight}" default-output-channel="productTransformerChannel">
<int:mapping value="true" channel="catchWeightFilteringChannel" />
<int:mapping value="false" channel="productTransformerChannel" />
</int:router>
그러나 봄의 속성을 변경, 문맥을 읽고 한 번으로 행동에 영향을 미치는되지 오버라이드 내 값이 ... 보인다 보인다 구성 요소가 해당 동작에 영향을 미치지 않습니다.
오키, 그것은 constructor arg입니다. 그렇다면 왜 setPrimaryExpression이라는 뮤 테이타가 있습니까? – JonathanVila
TestPropertySource 정보는 클래스 수준의 주석이므로 true와 false 값을 테스트하기 위해 2 가지 방법 대신 2 가지 테스트 클래스를 만들어야합니다. 그래서, 메소드 레벨에 DirtiesContext를 넣을 수는 있지만 메소드 레벨에서 속성을 오버라이드 할 수는 없습니까? – JonathanVila
내 대답은 UPDATE를 참조하십시오. –