测试通过等待文件到达开始的 Camel Route
Test Camel Route that starts by waiting for a file to arrive
我有一个等待在目录中接收 zip 文件的 Camel 路由。它解压缩它,然后遍历它包含的文件,在将它们发送到多个消息队列之一之前解析它们的内容。
我已经找到了端到端工作的路线,但现在我想编写单元测试来处理可能出现的不同情况。而我在第一个障碍就倒下了。
我在 Internet 上找到的所有单元测试似乎都以路由中的第一个组件收到一条消息开始。我需要模拟一个文件的存在。
我的路由配置在 Spring 上下文文件中,我可以看到我的路由正在被建议(例如:Adviced endpoint [file:///tmp/dta/xml_source?antInclude=*.zip&move=.done&moveFailed=.error] with mock endpoint [mock:file:/tmp/dta/xml_source]
)
我只是不知道如何将其付诸实践。
将建议从 mock:
替换为 seda:
或 direct:
并使用 ProducerTemplate
将消息发送到起始端点。
您可以简单地建议您的使用者(即 FILE)指向具有特定文件名的测试资源目录,并确保 noop=true 这样测试就不会删除该文件。
这样你就不会模拟这个端点,你的路由就像在真实场景中一样运行。
replaceFromWith("file:///TEST_RESOURCE_DIRECTORY/dta/xml_source?antInclude=*.zip&move=.done&moveFailed=.error&noop=true")
我有一个等待在目录中接收 zip 文件的 Camel 路由。它解压缩它,然后遍历它包含的文件,在将它们发送到多个消息队列之一之前解析它们的内容。
我已经找到了端到端工作的路线,但现在我想编写单元测试来处理可能出现的不同情况。而我在第一个障碍就倒下了。
我在 Internet 上找到的所有单元测试似乎都以路由中的第一个组件收到一条消息开始。我需要模拟一个文件的存在。
我的路由配置在 Spring 上下文文件中,我可以看到我的路由正在被建议(例如:Adviced endpoint [file:///tmp/dta/xml_source?antInclude=*.zip&move=.done&moveFailed=.error] with mock endpoint [mock:file:/tmp/dta/xml_source]
)
我只是不知道如何将其付诸实践。
将建议从 mock:
替换为 seda:
或 direct:
并使用 ProducerTemplate
将消息发送到起始端点。
您可以简单地建议您的使用者(即 FILE)指向具有特定文件名的测试资源目录,并确保 noop=true 这样测试就不会删除该文件。 这样你就不会模拟这个端点,你的路由就像在真实场景中一样运行。
replaceFromWith("file:///TEST_RESOURCE_DIRECTORY/dta/xml_source?antInclude=*.zip&move=.done&moveFailed=.error&noop=true")