diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/ErrorChannelRoutingTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/router/config/ErrorChannelRoutingTests-context.xml new file mode 100644 index 0000000000..0315cc55af --- /dev/null +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/ErrorChannelRoutingTests-context.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RouterParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RouterParserTests.java index 15a749fafe..3d0db4ddee 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/router/config/RouterParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/router/config/RouterParserTests.java @@ -25,22 +25,30 @@ import java.util.Collection; import java.util.Collections; import org.junit.Test; +import org.mockito.Mockito; import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.Message; import org.springframework.integration.MessageDeliveryException; import org.springframework.integration.annotation.Router; +import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.core.ChannelResolver; import org.springframework.integration.core.GenericMessage; import org.springframework.integration.core.MessageChannel; +import org.springframework.integration.core.MessageHandler; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.core.PollableChannel; import org.springframework.integration.core.StringMessage; +import org.springframework.integration.core.SubscribableChannel; import org.springframework.integration.router.AbstractMessageRouter; import org.springframework.integration.router.MethodInvokingRouter; import org.springframework.integration.test.util.TestUtils; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + /** * @author Mark Fisher * @author Jonas Partner @@ -172,6 +180,24 @@ public class RouterParserTests { assertEquals(new Integer(3), message3.getHeaders().getSequenceNumber()); assertEquals(new Integer(3), message3.getHeaders().getSequenceSize()); } + + @Test + public void testErrorChannel(){ + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "ErrorChannelRoutingTests-context.xml", this.getClass()); + MessageHandler handler = mock(MessageHandler.class); + DirectChannel inputChannel = context.getBean("inputChannel", DirectChannel.class); + SubscribableChannel errorChannel = context.getBean("errorChannel", SubscribableChannel.class); + errorChannel.subscribe(handler); + inputChannel.send(new StringMessage("fail")); + verify(handler, times(1)).handleMessage(Mockito.any(Message.class)); + } + + public static class NonExistingChannelRouter{ + public String route(String payload){ + return "foo"; + } + } public static class TestRouterImplementation extends AbstractMessageRouter {