【发布时间】:2019-12-19 10:27:04
【问题描述】:
我正在使用 MockMvc 来测试控制器。关于参数导入,我遇到了类型不匹配的问题。我尝试了所有的 json 样式。但没有任何效果
这是我的控制器类::
package app.dnatask.controller;
import ......;
@Slf4j
@RestController
@RequestMapping(value = "/API/scanresultconfigure")
public class ScanResultConfigureController extends BaseController {
@RequestMapping(value = "/queryScanResultList/{taskId}/{externalname}", method = RequestMethod.POST)
public IBaseResult queryscanResultList(final HttpServletRequest request, @PathVariable final String taskId, @PathVariable final String externalname, @RequestBody Map map) throws Exception {
return runController(new IControllRunner() {
public void run(IOutResult or, CheckResult cr) throws Exception {
......
}
}
}
}
这是我的测试课::
package app.dnatask.controller;
import ......
@WebAppConfiguration
@ContextConfiguration(classes = {ScanResultConfigureController.class})
@ComponentScan(
includeFilters = {
@ComponentScan.Filter(type = FilterType.CUSTOM,
value = {ScanResultConfigureController.class})
},
useDefaultFilters = false,
lazyInit = true
)
public class ScanResultConfigureControllerTest extends AbstractTestNGSpringContextTests {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@BeforeMethod
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).dispatchOptions(true).build();
System.out.println("UT starting.............");
}
@AfterMethod
public void am() {
System.out.println("UT ending.............");
}
@Test
public void testQueryscanResultList() throws Exception {
Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "value1");
testMap.put("key2", "value2");
String requestJson = JSONObject.toJSONString(testMap);
mockMvc.perform(
post("/API/scanresultconfigure/queryScanResultList/001/abc")
.contentType(MediaType.APPLICATION_JSON)
.param("map", requestJson)
)
.andExpect(status().isOk())
.andDo(print());
}
}
错误信息::
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json' not supported
java.lang.AssertionError: Status expected:<200> but was:<415>
这是一个springmvc框架实现的项目,我使用TestNG进行单元测试。
【问题讨论】:
-
这种内容类型的json问题已经在本站被问过好几次了。
-
谢谢你的提醒。之前我尝试搜索相关内容但没有找到合适的方法,可能是我没有搜索到正确的关键字,现在我找到了对应的解决方案。
标签: spring unit-testing spring-mvc testng mockmvc