다음과 같은 문제가 발생합니다. 스프링 부트 테스트가 있습니다. 여기에 mongoDbChannel
빈을 주입하고 스파이를가합니다. 그런 다음 정상적인 작업 흐름을 시작하고 send
메서드가 해당 bean에 대해 호출되는지 확인합니다. 확인 중에 @SpyBean 및 Mockito.any()
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MongoAsBackupConfig.class},
properties = {},
webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class MongoAsBackupConfigTest {
@SpyBean(name = "mongoDbChannel")
private QueueChannel mongoDbChannel;
@Autowired
private DirectChannel mongoDbWithFailoverChannel;
@DirtiesContext
@Test
public void shouldUseFallbackForFullQueue() throws InterruptedException {
IntStream.rangeClosed(1, BACKUP_QUEUE_CAPACITY + OVERFILLING_CLICK_COUNT).forEach(someNumber ->
mongoDbWithFailoverChannel.send(MessageBuilder.withPayload(createPayload(someNumber)).build()));
verify(mongoDbChannel, times(BACKUP_QUEUE_CAPACITY)).send(Mockito.any());
}
}
은 결과, 나는 any
콘크리트 매개 변수 값에 일치하지 않는 오류 메시지가 표시됩니다. 그러나 일반적으로 any
은 param의 모든 값을 의미합니다. 여기서 무엇이 잘못 되었습니까?
Argument(s) are different! Wanted:
mongoDbChannel.send(
<any>
);
-> at MongoAsBackupConfigTest.shouldUseFallbackForFullQueue(MongoAsBackupConfigTest.java:67)
Actual invocation has different arguments:
mongoDbChannel.send(
GenericMessage [payload=Click(...), headers={id=0eaa2317-b1b5-604d-65c5-78da521cd585, timestamp=1509085945379}],
10
);
-> at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
편집 : 나는 자바 (8)을 사용하고 그리고 난 any(GenericMessage.class)
, any(Message.class)
을 사용하려고하지만 동일한 효과했다.
예 java입니다. 8. 불행히도 제안서가 동일한 오류 메시지와 함께 작동하지 않습니다. 나는 any (Message.class)도 시도했다. –
아마도 2 args 버전이 실제로 호출됩니다 .. –
예, 그렇습니다! 오류 메시지'send ( GenericMessage [],)에 표시됩니다. '이제 작동합니다. –