【发布时间】:2019-06-03 07:32:08
【问题描述】:
我正在尝试为我的 spring-cloud-stream 项目创建测试。我创建了自己的 BizSyncProcessor 接口,而不是使用默认处理器,这似乎在所有文档中。我以前用测试做过这种项目,但不记得我是否同时使用了 mockito,所以我想知道这是否是问题所在,因为我正在做 @RunWith(MockitoJUnitRunner.class) 而不是@RunWith(SpringRunner)。
在我将 rabbit 实现作为依赖项包含在 maven 中之前,我也有 similar problems when building the actual app。
IntelliJ 在@Autowired BizSyncProcessor 上标记一个错误,指出“找不到‘BizSyncProcessor’类型的 Bean。但是我可以运行测试,所以它可以编译,但是运行测试时 bizSyncProcessor 为空。
我包含 mockito 是因为侦听消息的处理程序调用另一个服务(SFISClient),所以我正在模拟该调用。
这是我的测试:
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
@Configuration
@EnableBinding(BizSyncProcessor.class)
public class UpdatedBusinessHandlerTest {
@Autowired
private BizSyncProcessor bizSyncProcessor;
@Autowired
private MessageCollector messageCollector;
@Mock
SFISClient sfisClient;
@InjectMocks
UpdatedBusinessHandler updatedBusinessHandler;
@Test
public void testWiring() throws Exception {
UpdatedBusinessAlert updatedBusinessAlert = new UpdatedBusinessAlert();
updatedBusinessAlert.setBusinessId(UUID.randomUUID());
Message<UpdatedBusinessAlert> updatedBusinessAlertMessage = MessageBuilder.withPayload(updatedBusinessAlert).build();
bizSyncProcessor.writeUpdatedBusinessIds().send(updatedBusinessAlertMessage);
Message<BusinessFlooringSummary> businessFlooringSummaryMessage = (Message<BusinessFlooringSummary>) messageCollector.forChannel(bizSyncProcessor.writeFlooringSummaries()).poll();
BusinessFlooringSummary businessFlooringSummary = businessFlooringSummaryMessage.getPayload();
assertNotNull(businessFlooringSummary);
}
}
【问题讨论】:
标签: mockito spring-cloud-stream