私はspringframeworkのspring-testで遊んでいます。これは私のテストケースであるSpring RestController + Junit Testing
@RestController
@RequestMapping("/project")
public class ProjectController {
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public Project createProject(@RequestBody Project project, HttpServletResponse response) {
// TODO: create the object, store it in db...
response.setStatus(HttpServletResponse.SC_CREATED);
// return the created object - simulate by returning the request.
return project;
}
}
::私はそれを実行すると
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ProjectController.class })
@WebAppConfiguration
public class ProjectControllerTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testCreationOfANewProjectSucceeds() throws Exception {
Project project = new Project();
project.setName("MyName");
String json = new Gson().toJson(project);
mockMvc.perform(
post("/project")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andExpect(status().isCreated());
}
}
私は、ステータスコード415の代わりに201を取得する私は何を私の意図は、私の残りのコントローラで、次のPOSTメソッドをテストすることです行方不明?単純なGET要求が機能します。 、これはこれで問題が解決されます追加し、あなたのコードから欠落している
あなたが持っていジャクソンや他のJSONライブラリ(メッセージコンバータいくつかの他に基づいている場合)クラスパスで利用できるので、Springのメッセージコンバータはそれを変換できますか? – Stan
私はGsonを利用できます。私はジャクソンと再びそれをテストします。ちょうど@RequestBodyが動作しているときに@RequestBodyが動作するので、変換が動作しないように見えます。 – Joschi
@EnableWebMvcアノテーションがコントローラにありませんでした。今それは動作します。返信いただきありがとうございます! – Joschi