Я использую Spring-Integration в комплекте с Spring-Batch и застрял, пытаясь написать интеграционные тесты для тестирования всего потока, а не только одной конфигурации.
Я создал Embedded Sftp Server для этих тестов и пытаюсь отправить сообщение в sftpInboundChannel - сообщение отправлено, но ничего не происходит, но когда я отправляю это сообщение на следующий канал (после sftpInboundChannel), все идет нормально. Также я не могу загрузить свойства исходного кода теста, хотя я использую аннотацию @TestPropertySource.
Это мои аннотации к классу
@TestPropertySource(properties = {
//here goes all the properties
})
@EnableConfigurationProperties
@RunWith(SpringRunner.class)
@Import({TestConfig.class, SessionConfig.class})
@ActiveProfiles("it")
@SpringIntegrationTest
@EnableIntegration
@SpringBootTest
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
Это мое тело класса
@Autowired
private PollableChannel sftpInboundChannel;
@Autowired
private SessionFactory<ChannelSftp.LsEntry> defaultSftpSessionFactory;
@Autowired
private EmbeddedSftpServer server;
@Test
public void shouldDoSmth() {
RemoteFileTemplate<ChannelSftp.LsEntry> template;
try {
template = new RemoteFileTemplate<>(defaultSftpSessionFactory);
SftpTestUtils.moveToRemoteFolder(template);
final List<ChannelSftp.LsEntry> movedFiles = SftpTestUtils.listFilesFromDirectory("folder/subfolder", template);
log.info("Moved file {}", movedFiles.size());
final MessageBuilder<String> messageBuilder = MessageBuilder.withPayload("Sample.txt") // path to file
.setHeader("file_Path", "Sample.txt")
boolean wasSent = this.sftpInboundChannel.send(messageBuilder.build());
log.info("Was sent to sftpInboundChannel channel {}", wasSent);
log.info("message {}", messageBuilder.build());
} finally {
SftpTestUtils.cleanUp();
}
}