如何单元测试 sql-camel 路线中存储的步骤
How to unit test sql-stored steps in a camel route
我最近加入了一个项目,其中许多 autosys 作业被 camel 路线取代。大多数处理流程遵循相同的模式:
- 从某个文件夹读取文件
- 将某种反序列化应用到 java 结构中
- 根据 java 结构
中包含的某些值调用存储过程或其他过程
- 将处理结果发送给某个第三方消费者
实现存储过程调用的最简单方法是使用 sql-stored
组件。假设我有这条路线:
from("file://d:/temp/in/?include=myFile*.csv")
.process("myHeaderSetter")
.choice()
.when(header("myheader")).to("sql-stored:proc_1()?dataSource=#dataSource")
.otherwise().to("sql-stored:proc_2()?dataSource=#dataSource")
.end()
.to("reportGenerator")
.to("file://d:temp/out/?fileName=report.txt");
每个处理器都经过很好的单元测试,但我们希望确保路由逻辑符合我们的预期。存储过程可能需要一段时间才能执行,并且 运行 设置真实路径不是单元测试的选项部分,因此我需要一种方法来测试存储过程是否被调用而不实际让它们到达 运行.
那么像上面这样对路由进行单元测试的好方法是什么。
提前感谢您的意见
在测试时查看 advice-with (http://camel.apache.org/advicewith.html),因为您可以使用它用其他位替换部分路由,例如路由到模拟而不是 sql
我最近加入了一个项目,其中许多 autosys 作业被 camel 路线取代。大多数处理流程遵循相同的模式:
- 从某个文件夹读取文件
- 将某种反序列化应用到 java 结构中
- 根据 java 结构 中包含的某些值调用存储过程或其他过程
- 将处理结果发送给某个第三方消费者
实现存储过程调用的最简单方法是使用 sql-stored
组件。假设我有这条路线:
from("file://d:/temp/in/?include=myFile*.csv")
.process("myHeaderSetter")
.choice()
.when(header("myheader")).to("sql-stored:proc_1()?dataSource=#dataSource")
.otherwise().to("sql-stored:proc_2()?dataSource=#dataSource")
.end()
.to("reportGenerator")
.to("file://d:temp/out/?fileName=report.txt");
每个处理器都经过很好的单元测试,但我们希望确保路由逻辑符合我们的预期。存储过程可能需要一段时间才能执行,并且 运行 设置真实路径不是单元测试的选项部分,因此我需要一种方法来测试存储过程是否被调用而不实际让它们到达 运行.
那么像上面这样对路由进行单元测试的好方法是什么。
提前感谢您的意见
在测试时查看 advice-with (http://camel.apache.org/advicewith.html),因为您可以使用它用其他位替换部分路由,例如路由到模拟而不是 sql