我试图用 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)