java - Spring Security:我如何让@WithMockUser 返回一个类型对象 User.class
问题描述
在测试控制器时,我遇到了问题。这是被测试方法的签名在控制器中的样子:
public ResponseEntity<TaskCardDto> createTaskCard(@AuthenticationPrincipal User user, @RequestBody TaskCardDto taskCardDto)
在测试的方法上,我放了@WithMockUser
注释。在测试此方法时,我尝试模拟从存储库获取数据的服务:
TaskCard stub = ...;
when(taskCardService.saveTaskCard(any(TaskCard.class), any(User.class))).thenReturn(stub);
(如果有的话,这不是我传递TaskCard
给服务的错误,而不是TaskCardDto
。在控制器中,我将 DTO 转换为实体)。但测试最终崩溃并出现以下错误:
Argument(s) are different! Wanted:
taskCardServiceImpl bean.saveTaskCard(
<any com.sin.orb.domain.TaskCard>,
<any com.sin.orb.domain.User>
);
-> at com.sin.orb.controller.TaskCardControllerTest.createTaskCard(TaskCardControllerTest.java:67)
Actual invocations have different arguments:
taskCardServiceImpl bean.saveTaskCard(
TaskCard(id=null, name=test, creationDate=2020-05-28, tasks=[]),
null
);
正如您自己看到的那样,它期望看到User.class
,但得到null
。有没有办法@WithMockUser
返回 User 类的对象?
解决方案
推荐阅读
- airflow - 在 pipenv 安装的 Centos 7 上找不到气流.cfg
- android - Buildozer 类未找到 b'org/renpy/android/PythonActivity'
- android - 我还可以对我的应用应用哪些安全措施?
- mysql - 用逗号分隔输入和搜索的 SQL 存储过程
- pytorch - 使用 MS-COCO 格式作为 PyTorch MASKRCNN 的输入
- android - 小部件库捕获的异常,在颤振中抛出以下断言构建答案**错误**
- python - Python - 结合两个的幂来获得目标总和
- ios - 当点击文本输入字段时,Flutter 应用程序显着减慢,包括 Visual Studio 代码中的整个调试
- react-native - 反应本机测试库,未找到带有 testID 的实例
- grafana - 如何让 Grafana 正确显示这些统计信息?