java - Spring Framework - 模拟不是模拟
问题描述
我有一个 Spring MvC 应用程序。(Spring Framework是Java平台的应用框架和反转控制容器)用这个测试:
@RunWith(SpringJUnit4ClassRunner.class)
public class AutorisationServiceTest {
@Autowired
@InjectMocks
private IAutorisationService service;
@Mock
PersonneRepository personneRepository = Mockito.mock(PersonneRepository.class);
@Before
public void setup() {
}
@Test
public void should_Find_GardeWith2Affectations() throws IOException {
when(personneRepository.getAll(anyString())).thenReturn(DataLoader.mockData());
service.getAll("rules");
}
}
@Service
public class AutorisationService implements IAutorisationService {
private final PersonneRepository personneRepository;
public AutorisationService(PersonneRepository personneRepository) {
this.personneRepository = personneRepository;
}
@Override
public List<User> getAll(String where) {
return personneRepository.getAll(where));
}
...
}
但是当我运行测试时,似乎没有模拟回购
解决方案
此答案适用于testng:
MockitoTestExecutionListener
初始化模拟,你需要使用@MockBean
注释。
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(MockitoTestExecutionListener.class)
public class AutorisationServiceTest {
@MockBean
PersonneRepository personneRepository;
另外,不要忘记添加ResetMocksTestExecutionListener
以防止测试间持久模拟(请参阅此问题)。
推荐阅读
- go - Go 中的函数声明是否严格?
- c# - 将 C# 连接到非常旧的 ActiveX 控件
- html - 如何将两个超链接并排放置?
- python - 流式传输实时推文时出现 JSONDecodeError
- redis - 使用 Redis Cluster 自动故障转移到升级的 Redis Slave
- django - 升级到 Wagtail 2.3 和 Django 2.1 会导致迁移和登录冻结
- c# - 两个可旋转矩形的碰撞检测
- python - 无法使用 Beautiful Soup 获取图像的“src”标签
- python - python将数据而不是文件上传到s3存储桶
- javascript - 悬停导航栏时下拉菜单不起作用