Java Camel:在测试用例中添加TypeConverter

Java Camel:在测试用例中添加TypeConverter,java,apache-camel,Java,Apache Camel,Hy 我目前正在编写一个测试用例,在这个测试用例中,我需要将自写模型对象自动转换为字符串。 当执行代码“live”时,它会工作,因为其他组件会启动,但在testcase中不会,这就是为什么我需要在测试用例中添加mock-type-convert 这是我到目前为止所做的,但它似乎不起作用,因为类型转换崩溃(org.apache.camel.TypeConversionException:从type:com…MyClass转换为所需类型:java.lang.String时出错) context//在

Hy

我目前正在编写一个测试用例,在这个测试用例中,我需要将自写模型对象自动转换为字符串。
当执行代码“live”时,它会工作,因为其他组件会启动,但在testcase中不会,这就是为什么我需要在测试用例中添加mock-type-convert

这是我到目前为止所做的,但它似乎不起作用,因为类型转换崩溃(org.apache.camel.TypeConversionException:从type:com…MyClass转换为所需类型:java.lang.String时出错)

context//在测试类中自动连接
.getTypeConverterRegistry().addTypeConverters(新类型转换器)(){
@转换器
公共字符串myClassToString(MyClass文件){
if(file.getName().equals(expectedFileName)){
返回文件内容;
}否则{
抛出新的IllegalArgumentException(
模拟类型转换器的未知文件:“+file.getName());
}
}
});

我不确定这是不是在不创建专用类的情况下添加类型转换器的正确方法,但这是我经过研究后发现的,所以在尝试了更多的东西并实际理解抛出的异常后,我发现了我(可能)做错了什么

经过更多的尝试和错误后,我在类型转换器注册表中注册了上述代码,而没有对类型转换器本身进行任何更改(不确定我更改了什么,可能只是缓存问题)

当转换器最终被camel注册并执行时,我遇到了以下错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“java.lang.String”的符合条件的bean可用:至少需要1个符合autowire候选条件的bean。依赖项批注:{}

似乎无法使用匿名类(使用Spring Boot作为运行程序)添加类型转换器,因为Spring试图在其中注入一些字符串。
我可以通过将TypeConverter提取到一个实际的(非匿名)类,然后将该类的一个实例添加到注册表来解决这个问题。
也可以在测试中使用内部类执行此操作,只要它是公共的。
在任何情况下,让实际的conterter方法是静态的都很重要,否则Spring将抛出相同的错误

不知道为什么会发生这种情况,但至少我最终还是成功了。
也许有人可以对Springs的行为有所了解,它想在其中注入一个字符串,而这个字符串应该是自动连接的

问候
克里斯