| [[Test-TestComponent]] |
| Test Component |
| ~~~~~~~~~~~~~~ |
| |
| link:testing.html[Testing] of distributed and asynchronous processing is |
| notoriously difficult. The link:mock.html[Mock], link:test.html[Test] |
| and link:dataset.html[DataSet] endpoints work great with the |
| link:testing.html[Camel Testing Framework] to simplify your unit and |
| integration testing using |
| link:enterprise-integration-patterns.html[Enterprise Integration |
| Patterns] and Camel's large range of link:components.html[Components] |
| together with the powerful link:bean-integration.html[Bean Integration]. |
| |
| The *test* component extends the link:mock.html[Mock] component to |
| support pulling messages from another endpoint on startup to set the |
| expected message bodies on the underlying link:mock.html[Mock] endpoint. |
| That is, you use the test endpoint in a route and messages arriving on |
| it will be implicitly compared to some expected messages extracted from |
| some other location. |
| |
| So you can use, for example, an expected set of message bodies as files. |
| This will then set up a properly configured link:mock.html[Mock] |
| endpoint, which is only valid if the received messages match the number |
| of expected messages and their message payloads are equal. |
| |
| Maven users will need to add the following dependency to their `pom.xml` |
| for this component when using *Camel 2.8* or older: |
| |
| [source,xml] |
| ------------------------------------------------------------ |
| <dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-spring</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency> |
| ------------------------------------------------------------ |
| |
| From Camel 2.9 onwards the link:test.html[Test] component is provided |
| directly in the camel-core. |
| |
| [[Test-URIformat]] |
| URI format |
| ^^^^^^^^^^ |
| |
| [source,java] |
| -------------------------------- |
| test:expectedMessagesEndpointUri |
| -------------------------------- |
| |
| Where *expectedMessagesEndpointUri* refers to some other |
| link:component.html[Component] URI that the expected message bodies are |
| pulled from before starting the test. |
| |
| [[Test-URIOptions]] |
| URI Options |
| ^^^^^^^^^^^ |
| |
| [width="100%",cols="10%,10%,80%",options="header",] |
| |======================================================================= |
| |Name |Default Value |Description |
| |
| |`timeout` |`2000` |*Camel 2.12:* The timeout to use when polling for message bodies from |
| the URI. |
| |
| |anyOrder |false |*Camel 2.17:* Whether the expected messages should arrive in the same |
| order or can be in any order. |
| |
| |split |false |*Camel 2.17:* If enabled the the messages loaded from the test endpoint |
| will be split using \n\r delimiters (new lines) so each line is an |
| expected message. + |
| For example to use a file endpoint to load a file where each line is an |
| expected message. |
| |
| |delimiter |\n,\r |*Camel 2.17:* The split delimiter to use when split is enabled. By |
| default the delimiter is new line based. The delimiter can be a regular |
| expression. |
| |======================================================================= |
| |
| [[Test-Example]] |
| Example |
| ^^^^^^^ |
| |
| For example, you could write a test case as follows: |
| |
| [source,java] |
| -------------------------------------------------- |
| from("seda:someEndpoint"). |
| to("test:file://data/expectedOutput?noop=true"); |
| -------------------------------------------------- |
| |
| If your test then invokes the |
| http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/mock/MockEndpoint.html#assertIsSatisfied(org.apache.camel.CamelContext)[MockEndpoint.assertIsSatisfied(camelContext) |
| method], your test case will perform the necessary assertions. |
| |
| To see how you can set other expectations on the test endpoint, see the |
| link:mock.html[Mock] component. |
| |
| [[Test-SeeAlso]] |
| See Also |
| ^^^^^^^^ |
| |
| * link:configuring-camel.html[Configuring Camel] |
| * link:component.html[Component] |
| * link:endpoint.html[Endpoint] |
| * link:getting-started.html[Getting Started] |
| |
| * link:spring-testing.html[Spring Testing] |
| |