java - 使用 Mockito 进行单元测试
问题描述
我是单元测试的新手,而且我正在努力理解它应该如何完成。我有一些使用@RequestParam 的方法,但我不确定如何模拟它。如果我有一个可以应用于其他方法的示例,那就太好了。
你能帮我写一个测试方法吗?这将非常有用。
@PutMapping("/player/update-password")
public ResponseEntity<?> updatePlayerPassword(@RequestParam("token") String token, @RequestParam("password") String newPassword) throws URISyntaxException {
String message = bundle.getString("put_player");
log.debug(message, token, newPassword);
PlayerEntity player = playerService.updatePassword(token, newPassword);
return new ResponseEntity<>(PlayerMapper.INSTANCE.mapPlayer(player), HttpStatus.ACCEPTED);
}
谢谢。
解决方案
希望您使用的是 Mockito。您可以尝试以下代码,需要添加所有导入
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
public class YourClassNameTest {
@Autowired
MockMvc mockMvc;
@InjectMocks
YourClassName yourClassName;
@Mock
PlayerService playerService;
@Before
public void Setup() {
mockMvc = MockMvcBuilders.standaloneSetup(yourClassName);
}
@Test
public void updatePlayerPasswordTest() throws Exception {
PlayerEntity player = new PlayerEntity();
// set some date if you want
Mockito.when(playerService.updatePassword(anyString(), anyString())).thenReturn(player);
RequestBuilder requestBuilder = MockMvcRequestBuilders
.get("/player/update-password?token=abc&password=test")
.accept(MediaType.APPLICATION_JSON);
mockMvc.perform(requestBuilder).andExpect(MockMvcResultMatchers.status().isCreated());
}
}
推荐阅读
- flutter - RenderFlex 子级具有非零弹性,但传入的高度约束是无界的
- python - 根据一行中的关键字将csv分成几部分,然后转置
- python - pyspark concat_ws 用于数组到字符串
- php - 如何让活动的 PHP 文件在 Microsoft Visual Code 中运行?
- docker - 如何在 ubuntu 容器中使用 docker
- bash - 使用 PKI 对 bash 应用程序实施限制
- python - 使用 Seaborn 绘制条形图
- powerbi - Power BI 查询按顺序运行
- javascript - NODE.JS - 检查对象中是否有意外字段
- html - 动画后接收指针事件的链接在 Safari 中不可点击