1 回答
TA贡献1776条经验 获得超12个赞
好吧,经过长时间的搜索,我发现我应该在MockMVC中添加一个转换器。例如,您可以在此处阅读什么转换器。我的项目中已经有了它,但没有意识到它不适用于 MockMVC。
因此,您可以像这样将转换器添加到 MockMVC:
@Autowired
private StringToRoleConverter stringToRoleConverter;
@Before
public void init() {
FormattingConversionService cs = new FormattingConversionService();
cs.addConverter(stringToRoleConverter);
mockMvc = MockMvcBuilders.standaloneSetup(userController)
.setConversionService(cs)
.build();
}
转换器本身:
@Component
public class StringToRoleConverter implements Converter<String, Role> {
@Autowired
private RoleService roleService;
@Override
public Role convert(String id) {
Role role = roleService.findById(Integer.valueOf(id));
return role;
}
}
然后我可以添加这样的参数:
mockMvc.perform(post("/users/edit/{id}", user.getId())
.param("roles", "2"))
尽管我在那里传递了一个字符串,但它将在 Spring 转换器的帮助下转换为 Role。
添加回答
举报