彈簧引導 2.7.5
JUnit 4.13.2
我在應用程式中有 SQS 偵聽器:
@Component
@EnableSqs
@Slf4j
public class SdkUploadListener {
private final S3Service s3Service;
@Autowired
public SdkUploadListener(final S3Service s3Service) {
this.s3Service = s3Service;
}
@SqsListener(value = "${amazon.sqs.sdk-upload-queue-url}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void processMessage(final S3EventNotification message) throws JsonProcessingException {
...
}
}
有一個簡單的測驗用例(只是想測驗 Airflow 運行 Dag):
@SpringBootTest
@Slf4j
class AirflowClientTest {
@Autowired
private AirflowClient airflowClient;
@Test
public void testDagRun() {
final String dagName = "test-dag";
final OffsetDateTime logicalDate = OffsetDateTime.parse("2022-08-01T00:00:00.000Z");
final AirflowRunDugRequest request = new AirflowRunDugRequest(logicalDate, Map.of());
airflowClient.triggerIngestionDag(dagName, request).subscribe(res -> log.info("Response received: {}", res));
}
}
問題是 SQS 偵聽器在測驗用例運行時開始偵聽佇列。
是否可以禁用 SQS 偵聽器進行測驗?
所以我需要為此使用模擬嗎?
uj5u.com熱心網友回復:
我有一個非常相似的問題。我的解決方案是配置類中的 ConditionalOnProperty 注釋。
@Configuration
@EnableSqs
@ConditionalOnProperty(value = "my.property", havingValue = "true", matchIfMissing = true)
public class MyConfig {
}
使用此注釋,您不必更改任何 PROD 配置。為了在測驗范圍內使用,您可以將配置值放在src/test/resources/config/application.yml.It 下。它禁用所有測驗的配置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534306.html
標籤:爪哇春天联机
