[スプリングガイドとAWS単独で実施されるWebサービス]CHAPTER 2 HelloControllerとテストコードの学習
5283 ワード
1.主クレーム
package com.hadoyaji.book.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
@SpringBootApplication
:スプリングガイドの自動設定の処理、スプリングbeanの読み取り、自動設定の作成
:@宣言位置から設定の読み込みを開始するので、プロジェクトの上部に宣言します.
SpringApplication.run(Application.class,args);
:埋め込みwasの実行
2.Hello Controlとテストコード
1) HelloController
package com.hadoyaji.book.springboot.web;
import com.hadoyaji.book.springboot.web.dto.HelloResponseDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("amount") int amount){
return new HelloResponseDto(name,amount);
}
}
@RestController
:コントローラをJSON復帰コントローラとして作成する
:ASISメソッドごとに@ResponseBodyと宣言
@GetMapping
:HTTPメソッドgetリクエストを受信できるapiの作成
:ASIS@requestMapping(method=requestMethod.GET)と同じ
import com.hadoyaji.book.springboot.config.auth.SecurityConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class,
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class)
})
public class HelloControllerTest {
@Autowired
private MockMvc mvc;
@WithMockUser(roles="USER")
@Test
public void hello_가_리턴된다() throws Exception{
String hello = "hello";
mvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string(hello));
}
@WithMockUser(roles = "USER")
@Test
public void helloDto가_리턴된다() throws Exception{
String name = "hello";
int amount = 1000;
(mvc.perform(get("/hello/dto").param("name", name).param("amount",String.valueOf(amount))))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name",is(name)))
.andExpect(jsonPath("$.amount",is(amount)));
}
}
@RunWith(SpringRunner.class)
:JUNIT内蔵エフェクタ以外のエフェクタ(SpringRunner)をテスト中に実行します.
@WebMvcTest
:WEB(Spring MVC)に集中
:宣言時に@Controller、@Controller Addiceなどを使用可能
:@Service、@Component、@Repositoryは使用できません
@Autowired
:スプリングによって管理されるギャップを受け入れる
private MockMvc mvc;
:Web APIテスト時に使用する、スプリングMVCテストの起点
mvc.perform(get("/hello"))
:HTTP GET要求
.andExpect(status().isOk())
:検証結果
3.lombokのHelloResponseDtoとテストコードを適用する
1) HelloResponseDto
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
:すべての宣言を含むfinalフィールドを含むジェネレータ(finalを除く)
2)HelloResponseDtoTest
:RequiredArgsConstructorのジェネレータとして作成するかどうかをテストします.
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class HelloResponseDtoTest {
@Test
public void 롬복_기능_테스트(){
//given
String name = "test";
int amount = 1000;
//when
HelloResponseDto dto = new HelloResponseDto(name,amount);
//then
assertThat(dto.getName()).isEqualTo(name);
assertThat(dto.getAmount()).isEqualTo(amount);
}
}
:テストするデータ値
:テスト内容/シナリオ設定
:テストする期待値の検証
assertThat:検証するターゲットメソッドパラメータの設定
isEqualto:同等比較方法
Reference
この問題について([スプリングガイドとAWS単独で実施されるWebサービス]CHAPTER 2 HelloControllerとテストコードの学習), 我々は、より多くの情報をここで見つけました https://velog.io/@hadoyaji/스프링부트와-AWS로-혼자-구현하는-웹서비스-따라하기-CHAPTER-2-이동욱-저자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol