次のRESTコントローラーがあります
@Controller
@RequestMapping("/rest/transceptors")
public class TransceptorRestController
{
@Autowired
private TransceptorDao transceptorDao;
@RequestMapping(value="/get/{idTransceptor}", method=RequestMethod.GET)
public @ResponseBody Transceptor getOne(@PathVariable("idTransceptor") Long idTransceptor)
{
return transceptorDao.searchByIdTransceptor(idTransceptor);
}
}
このコントローラーは JBoss での実行時に正しく機能し、結果は期待どおりです。私は Postman (Google Chrome の REST テスト拡張機能) を使用しており、XML と JSON で正しい結果を得ることができます。
しかし、それをテストするために MockMVC を使用すると問題が発生します。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
locations={
"classpath:test-servlet-context.xml"
})
@WebAppConfiguration
public class TransceptorRestControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup()
{
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testRoot() throws Exception
{
mockMvc.perform(get("/")).
andExpect(status().isOk());
}
@Test
public void testGet() throws Exception
{
mockMvc.perform(get("/rest/transceptors/get/1"))
.andExpect(status().isOk())
.andDo(print())
.andExpect(model().attribute("name", equals("Test_Name_1")));
}
TestRoot テストは問題なく動作します。しかし、andExpect(model()... を使用しようとすると、「ModelAndView が見つかりません」というメッセージが表示されます。
XML または JSON の特定の期待のために model() 部分を置き換えると、XML および JSON 文字列は常に空を返します。
私はこれを理解しようと何日も費やしてきましたが、私は Java の初心者であり、Spring の初心者です。それを修正するためにどこを見ればよいか教えてもらえますか?
追加情報として、ログメッセージを(sfj4lで)どこにでも置いていましたが、Junitで実行すると、DAOのログメッセージは機能し、テストモジュール自体のログメッセージは機能しますが、RESTコントローラー内のログメッセージは表示されません.
GET 関数が一致するようなものですが、関数の内容は実行されず、空の応答が返されます。それにもかかわらず、私の isOk() への呼び出しは成功しています。