16

署名付きのSpring MVCコントローラーコードをいくつか継承したとします

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ModelAndView upload(HttpServletRequest request, HttpServletResponse response) {

  String remoteAddress = request.getRemotedAddr();
  auditService.logAddress(remoteAddress);

  // do work...

  return mav;
}

テストを実行するSpring MockMvcテストがあります

public void someTest() {
    mockMvc().perform(fileUpload("/upload").file(FileFactory.stringContent("myFile")));

    // do work...
    verify(auditService.logAddress("123456"));
}

アップロード コントローラー メソッドに渡される HttpServletRequest オブジェクトのリモート アドレスを「12345」に設定する必要があるため、テストでauditServiceの呼び出しを検証できます。

MockHttpServletRequestオブジェクトを作成してsetRemoteAddr()メソッドを呼び出すことはできますが、このモック リクエスト オブジェクトを mockMvc() メソッド呼び出しに渡す方法を教えてください。

4

1 に答える 1

29

を追加できますRequestPostProcessor。メソッドを使用して、mockmvc のものに渡すことができますwith()

mockMvc().perform(
  fileUpload("/upload")
  .file(FileFactory.stringContent("myFile"))
  .with(new RequestPostProcessor() { 
    public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) {
       request.setRemoteAddr("12345"); 
       return request;
    }}));

そのようなものがうまくいくはずです。

于 2013-08-28T12:30:10.163 に答える