我有一个骆驼路由,它从 ftp 服务器轮询文件并将文件发送到 s3。我在路由中有一些处理器,它们根据文件名计算/操作标头。我需要测试这条路线,如何注入我的处理器并在我的处理器中使用文件语言?
@RunWith(MockitoJUnitRunner.class)
public class CamelS3HeadersProcessorTest extends CamelTestSupport {
private String filePath = "src/test/resources/sample.txt";
// @Autowired
// private CamelS3HeadersProcessor camelS3HeadersProcessor;
@Test
public void shouldSetS3HeadersProperly() throws Exception {
File file = new File(filePath);
template.sendBody("direct:start", file);
getMockEndpoint("mock:result").expectedMessageCount(1);
getMockEndpoint("mock:result").expectedHeaderReceived(S3Constants.KEY, file.getName());
assertMockEndpointsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start").process(new CamelS3HeadersProcessor()).to("mock:result");
}
};
}
}
处理器:
@Component
public class CamelS3HeadersProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
SimpleBuilder simpleBuilder = new SimpleBuilder("${file:name}");
String fileName = simpleBuilder.evaluate(exchange, String.class);
//do some logic and set headers
}
}
我不想嘲笑我的处理器。我想模拟我的端点并测试我的处理器。
问题:
无法自动装配/注入我的处理器。
文件名被评估为空。如何使用 FileConsumer/FTPConsumer 而不是 ProducerTemplate?