Camel 测试:使用参数获取预期的标头字符串

t40tm48m  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(118)

我有一条路线

from("sql:classpath:sql/selectAccounts.sql?outputClass=Account&delay={{EXEC_INTVAL_MS:60000}}&useIterator=false")
    .routeId(ROUTE_MIGRATE_ACCOUNTS)
    .to("log:accounts?showAll=true&level=DEBUG")
    .setHeader(HEADER_MIGRATION_TYPE, constant(HEADER_MIGRATION_TYPE_ACCOUNTS))
    .setHeader(HEADER_API_TYPE, constant(HEADER_API_TYPE_ADRE))
    .setHeader(SQL_STORED_TEMPLATE, constant("${header.apiType}.MIGRATION_STARTET(INTEGER ${header.id})"))
    .to("direct:markStarted")

from("direct:markStarted").routeId(ROUTE_MARK_STARTED_IN)
    .split(body())
    .setHeader("id", convertToExpression(simple("${body.id}"),Integer.class))
    .to("sql-stored:template").id(ID_MARK_STARTED_TO_SQL_STORE)
    .log("${header.id} marked as migration started");

带标题

static final String HEADER_API_TYPE = "apiType";
    static final String HEADER_API_TYPE_ADRE = "ADRE_API";

我想测试一下,调用sql-stored时是否使用了预期的标头,其中占位符a是这样填充的
地址_API.迁移_启动(整数12)
我发现

mockSQLStored.expectedHeaderValuesReceivedInAnyOrder(SQL_STORED_TEMPLATE,
"${header.apiType}.MIGRATION_STARTET(INTEGER ${header.id})",
"${header.apiType}.MIGRATION_STARTET(INTEGER ${header.id})");

像这样完美工作的东西。
我如何检查填充了参数的标题?

1mrurvl1

1mrurvl11#

实际上你不需要这样做,因为这将测试Camel框架的底层sql组件,这已经测试过了。相反,你可以测试填充的“id”头是否包含预期的数字(从主体中提取),在本例中是12:

mockSQLStored.expectedHeaderValuesReceivedInAnyOrder("id", 12);

相关问题