2017-04-17 1 views
0

TestSupportBinder를 사용하여 스프링 클라우드 스트림 응용 프로그램에 대한 테스트를 작성하려고합니다. official documentsofficial github을 포함하여 내가 발견 한 모든 예제는 ProcessorTransformer으로 테스트해야합니다. 이 테스트에서는 Tranformer을 사용하여 출력 채널을 가져오고 채널 객체를 messageCollector.forChannel 메서드로 보내 출력을 폴링합니다.Transformer를 사용하지 않고 TestSupportBinder에서 채널을 얻는 방법

그러나 제공된 Processer을 사용하는 대신 내 자신의 인터페이스를 작성했습니다. 테스트 코드에서 필요한 Channel 객체를 가져 오는 방법을 찾을 수 없습니다. Channel 객체를 얻기 위해 인터페이스를 테스트 클래스에 자동으로 연결하려고 시도했지만 java.lang.IllegalArgumentException: Channel [MY_CHANNEL] was not bound by class org.springframework.cloud.stream.test.binder.TestSupportBinder으로 끝났다.

답변

0

오류 메시지는 채널 MY_CHANNEL이 MessageCollector에 등록되지 않았 음을 의미합니다. 이 경우 인터페이스에서 귀하의 채널 MY_CHANNEL은 신청서에 EnableBinding으로 신고되지 않았 음을 나타냅니다. 귀하의 응용 프로그램에 @EnableBinding(MyOwnInterface.class)이 있습니까 (MY_CHANNEL 채널을 선언하는 MyOwnInterface 포함)?

+0

답변 해 주셔서 감사합니다. 내 응용 프로그램 코드는 [다른 게시물] (http://stackoverflow.com/questions/43446135/spring-cloud-stream-kafka-dispatcher-has-no-subscribers-error)에서 사용할 수 있습니다. 내 테스트 코드는 제출 된 요청을 "승인 된"채널에서 메시지를 얻는 것을 정점으로하는 것입니다. 따라서 MY_CHANNEL은 실제로 "승인 된"채널입니다. – ccshih

+0

그게'messageCollector. forChannel' 메소드는'MessageChannel'을 허용하지만'SubscribableChannel'을 허용하지 않습니다. 'SubscribableChannel'을'messageCollector '에 넘깁니다. forChannel'은 예외로 연결됩니다. – ccshih

관련 문제