首页 > 解决方案 > 如何模拟bean的所有实例

问题描述

在我尝试使用 spring-boot-starter-test 测试多线程应用程序后:

APIConnector apiConnector1 = (APIConnector) applicationContext.getBean("test");
APIConnector apiConnector2 = (APIConnector) applicationContext.getBean("test");
APIConnector apiConnector3 = (APIConnector) applicationContext.getBean("test");

这是测试 bean 代码:

@Component("test")
@Scope("prototype")
public class Test {}

APIConnector 的第一个实例是模拟的,但所有其他新 bean 都是真实的类实例。

@Profile("test")
@Configuration
public class APIConnectorTestConfiguration {

    @Bean
    @Primary
    public APIConnector apiConnectorTest() {
       APIConnector mock = mock(APIConnector.class);
       when(mock.test(anyString(), anyDouble(), anyDouble()))
            .thenReturn(true);
}

标签: javaspringspring-bootmockito

解决方案


推荐阅读