【Spring】MockMVCでリクエストパラメータをつける方法
MockMVCでリクエストパラメータをつける方法
MockMvcを使ってSpring MVCで作成したAPIをテストする際にGETリクエストにリクエストパラメータをつける方法を紹介します。
実行環境は以下の通りです。
- Java 11
- Spring Boot 2.3.1
以下のようにMockHttpServletRequestBuilderクラスのparamメソッドを使ってリクエストパラメータを付与することができます。
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ItemControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void test1() throws Exception {
mockMvc.perform(
get("/items")
.param("id", "123") // パラメータを付与
.param("name", "sample1")) // パラメータを付与
.andExpect(status().isOk()); // レスポンスのステータスコードが200であることを確認
}
}
この例ではAPIのインターフェイスとなるコントローラとレスポンスクラスを以下のように作成します。
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@RestController
public class ItemController {
@GetMapping("items")
public ItemResponse index(@RequestParam("id") int id, @RequestParam("name") String name) {
return new ItemResponse(id, name, 100);
}
}
Lombokを使ってゲッター、セッター、コンストラクタなどを生成しています。
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ItemResponse {
int id;
String name;
int price;
}