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。
添加回答
舉報