小编a-k*_*zer的帖子

Mockito 无法创建 @Autowired Spring-Data Repository 的间谍

我试图用 Mockito.spy 功能覆盖我的整个测试环境,所以无论何时我想要我都可以存根一个方法,但所有其他调用都转到默认功能。这在服务层上效果很好,但我在存储库层上遇到了问题。

我的设置如下:

Mockito - 2.15.0 Spring - 5.0.8 SpringBoot - 2.0.4

存储库:

public interface ARepository extends CrudRepository<ADBO, Long> {}
Run Code Online (Sandbox Code Playgroud)

服务:

@Service
public class AService {

    @Autowired
    ARepository aRepository;

    public ADBO getById(long id) {
        return aRepository.findById(id).orElse(null);
    }

    public Iterable<ADBO> getAll() {
        return aRepository.findAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

间谍的配置:

@Profile("enableSpy")
@Configuration
public class SpyConfig {

    @Bean
    @Primary
    public ARepository aRepository() {
        return Mockito.spy(ARepository.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

还有我的测试课:

@ActiveProfiles("enableSpy")
@RunWith(SpringRunner.class)
@SpringBootTest
public class AServiceTest {

    @Autowired
    AService aService;

    @Autowired
    ARepository aRepository;

    @Test
    public void …
Run Code Online (Sandbox Code Playgroud)

java unit-testing spy spring-data-jpa spring-boot

12
推荐指数
2
解决办法
8070
查看次数

标签 统计

java ×1

spring-boot ×1

spring-data-jpa ×1

spy ×1

unit-testing ×1