Spring Mock repository.count() 总是返回 0



我有一个 Spring 启动项目,我正在尝试模拟我的存储库进行测试。 我希望我的存储库.count() 返回 30L,但它实际上总是返回 0

@Service
@Transactional
public class DishServiceImpl implements DishService {
private final DishRepository dishRepository;
public DishServiceImpl(DishRepository dishRepository) {
this.dishRepository = dishRepository;
}
@Override
public List<Dish> searchDishes() {
long countDish = dishRepository.count();
System.out.println(countDish);
[...]
}
}

@RunWith(SpringRunner.class)
@SpringBootTest(classes = WhatAreWeEatingApp.class)
@Transactional
public class DishServiceTest{
@Mock
private DishRepository dishRepository;
@Autowired
private DishService dishService;
@Test
public void test(){
when(dishRepository.count()).thenReturn(30L);
dishService.searchDishes();
[...]
}

存储库模拟永远不会设置为对 Bean 服务的依赖关系。
在这里,您在正在运行的 Spring 容器的框架中模拟:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = WhatAreWeEatingApp.class)

它不是单元测试。因此,您希望使用 Spring Boot 中的@MockBean来模拟容器中的 bean,而不是@MockMockito 中的 Bean 来模拟在容器外部创建的实例。
不喜欢自动促销帖子,但这个问题应该对您有所帮助。

若要更进一步,无需运行容器来测试服务方法。 因此,您可能应该删除 Spring Boot 测试注释并编写一个真正的单元测试。

相关内容

  • 没有找到相关文章

最新更新