Rumah  >  Artikel  >  Cara membuat ujian berfungsi untuk IntegrationFlows

Cara membuat ujian berfungsi untuk IntegrationFlows

WBOY
WBOYke hadapan
2024-02-08 21:11:03851semak imbas

Editor PHP Xinyi akan memperkenalkan anda cara membuat ujian berfungsi untuk IntegrationFlows. IntegrationFlows ialah komponen penting dalam rangka kerja Integrasi Spring, digunakan untuk mentakrif dan mengurus logik aliran mesej. Ujian fungsional ialah salah satu pautan utama untuk memastikan operasi IntegrationFlows yang betul. Dalam artikel ini, kami akan memperkenalkan langkah dan pertimbangan untuk membuat ujian berfungsi untuk IntegrationFlows untuk membantu pembangun melaksanakan kerja ujian integrasi dengan lebih baik.

Kandungan soalan

Saya mempunyai standardintegrationflow yang berjalan setiap hari dan memadamkan fail yang lebih lama daripada 10 hari.

@Bean
  public StandardIntegrationFlow oldReceiptsCleaner(
      @Qualifier("receiptSftpRemoteFileTemplate")
          RecursiveSftpRemoteFileTemplate receiptSftpRemoteFileTemplate,
      RemoteSftpFileRemover remoteSftpFileRemover) {

    return IntegrationFlows.from(
            Sftp.inboundStreamingAdapter(receiptSftpRemoteFileTemplate)
                .remoteDirectory(properties.getSftpPath()),
            e ->
                e.poller(
                    Pollers.cron(properties.getCronExpression())
                        .maxMessagesPerPoll(-1)).id("oldReceiptsCleanerPoller"))
        .handle(remoteSftpFileRemover::removeFile)
        .get();
  }

Saya ingin membuat ujian berfungsi untuk mengesahkan bahawa ia berfungsi. Saya telah menguji kod secara manual, menetapkan ungkapan cron untuk dijalankan setiap 2 minit dan memadamkan fail yang lebih lama daripada 5 minit, tetapi sudah tentu saya memerlukan beberapa ujian automatik.

Saya terfikir untuk mencipta 2 fail, satu lebih lama daripada 10 hari dan satu lagi tidak. Dapatkan kedua-dua fail dan sahkan ia wujud. Kemudian gunakan objek sourcepollingchanneladapter untuk mencetuskan sourcepollingchanneladapter 的对象手动触发 standardintegrationflow 并调用 .start() secara manual dan panggil fungsi .start(), kemudian cuba dapatkannya semula dan sahkan bahawa ia telah dipadamkan.

Soalan pertama ialah sama ada ini cara yang betul untuk menguji aliran integrasi. Selain itu, saya tidak dapat mencari cara mudah untuk mencipta fail dan menukar masa pengubahsuaiannya dalam ujian.

Saya menggunakan integrasi spring 5.5.15 dan rangka kerja spock untuk ujian. Juga gunakan bekas minio untuk menyimpan fail pada pelayan untuk ujian berfungsi

Penyelesaian

Anda boleh PollerSpec 作为 bean 并从 oldReceiptsCleaner 流定义中引用它。然后您在测试配置中覆盖该 bean。然后你就有了 LastModifiedFileListFilter ,它可以基于 age beberapa sifat dan nyatakan nilai yang diperlukan dalam ujian.

Saya tidak biasa dengan Minio, tetapi mungkin ada API cara membuat fail menggunakan yang diperlukan lastModified.

Kemudian ya. Anda boleh menambah @SpringIntegrationTestnoAutoStartup 一起使用作为 Sftp.inboundStreamingAdapter 的 bean 名称。创建文件后,您可以在测试方法中手动启动SourcePollingChannelAdapter.

Atas ialah kandungan terperinci Cara membuat ujian berfungsi untuk IntegrationFlows. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam