๐ ๋ฐฐ์ด ๊ฒ
AssertJ์ assertAll
JUnit5๋ AssertJ์ ๊ฒ์ฆ ๋ฉ์๋(e.g. assertThat() ..)๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋ ์์ ํ๋๊ฐ ์คํจํ๋ฉด ๋ค์ ๊ฒ์ฆ๋ฌธ์ ์คํํ์ง ์๋๋ค.
์ด๋ฅผ ์ํด ๋ฌถ์ด์ ํ ๋ฒ์ ์คํํ ์ ์๋ค.
ํตํฉ ํ ์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์คํธ, ๋๋ฏธ๋ฐ์ดํฐ ์ธํ
ํตํฉ ํ ์คํธ๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๊ธฐ๊ฐ, ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ผ ํ๋ ์ํฉ์ด ์์๋ค.
์๊ฐํด๋ณธ ์ธํ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
1. java ์ฝ๋๋ก ์ง์ data ๋ฃ๊ธฐ (ํ๋์ฉ ๋ฃ๊ฑฐ๋ initDB() ์ ๊ฐ์ ๋ง๋ ํด๋์ค๋ก ํ ๋ฒ์ ๋ฃ๊ธฐ ๋ฑ)
2. @Sql ์ด๋ ธํ ์ด์ ์ ํ์ฉํด ์ด๊ธฐ .sql ์คํฌ๋ฆฝํธ ์คํํ๊ธฐ
3. application-test.yml ํ ์คํธ์ฉ ํ๊ฒฝ ์ธํ ์ผ๋ก ์ด๊ธฐ์. sql ์ธํ ํ๊ธฐ
ํ ์คํธ์ ๋ ๋ฆฝ์ฑ์ ์ํด ํ ์คํธ ๋ง๋ค ๋์ผํ ํ๊ฒฝ์ด ๊ฐ์ถฐ์ ธ์ผ ํ๋ค. ์ด์ ํ ์คํธ์์ update๋ delete ํ๋ค๋ฉด rollback ํ์ฌ ๋ค์ ํ ์คํธ์ ์ํฅ์ ๋ฏธ์น๋ฉด ์ ๋๋ค.
1,2๋ฒ์ ๊ฒฝ์ฐ ํ ์คํธ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐ๊ฐ์ ๋ฃ๊ณ ๋ค์ ์ง์์ฃผ๋ ๊ธฐ๋ฅ์ด ๋ณ๋๋ก ํ์ํ๋ค. ์๋๋ฉด ๋ชจ๋ ๊ณผ์ ์ ๋กค๋ฐฑํ๋ค.
3๋ฒ์ ๊ฒฝ์ฐ ์ด๊ธฐ ๋ฐ์ดํฐ๊ฐ ์ธํ ๋์ด์๊ธฐ ๋๋ฌธ์ ๋กค๋ฐฑ์ผ๋ก ๋ ๋ฆฝ์ฑ์ ์ ์งํ๋ค.
ํ์ฌ 3๋ฒ์ ๊ฒฝ์ฐ๋ก ์ ํํ๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์๋ค. ์ด๊ธฐ ์ธํ ํ๋ .sql์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ํ ์คํธ ํ๊ท ๋ฐฉ์ง๊ฐ ๋์ง ๋ชปํ๋ค.
ํ ์คํธ๋ฅผ ์ํ DB ์ธํ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ์๊ฐํด๋ณด์์ผ๊ฒ ๋ค.
@PathVaribale, @RequestParam์์ Optional๋ก ๋ฐ๊ธฐ
@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam Optional<String> id){
return "ID: " + id.orElseGet(() -> "not provided");
}
@GetMapping(value = { "/api/employeeswithoptional", "/api/employeeswithoptional/{id}" })
@ResponseBody
public String getEmployeesByIdWithOptional(@PathVariable Optional<String> id) {
if (id.isPresent()) {
return "ID: " + id.get();
} else {
return "ID missing";
}
}
// https://www.baeldung.com/spring-pathvariable
// https://www.baeldung.com/spring-request-param
@PathVariable, @RequestParam์ ๊ฐ์ Optional๋ก ๋ฐ์ ์ ์๋ค.
์ฝ๋ ์ค์ฟผ๋ ์ ๋ฐฐ ๊ธฐ์์ ์จ๋ผ์ธ ๋ฏธํ (ํ์ปค๋ฐ ๋ฐ์ด)
์ค๋ ์ ๋ 7์๋ถํฐ ๊ฑฐ์ 10์๊น์ง 3์๊ฐ ๋์ ์ฝ๋ ์ค์ฟผ๋ ์ ๋ฐฐ๋ค๊ณผ ์ค์ผ๋ก ๋ง๋ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค.
roach, jane, yeon, ๋ง๋ฅด์ฝ, ์ฟ ํผ, K, ์๋ฆฌ, dong, Hiro, Dan, dion, ์ฐ๋ ์ ๋ฐฐ๋ค์ ๋ง๋ฌ๋ค. ๊ณต์ ์๊ฐ์ด ๋ง์ณค์์๋ ๋๊น์ง ๋จ์์ ๊ฒฝํ ๊ณต์ ํด์ค ์ ๋ฐฐ๋ค์ด ์์ด ํ์ด ๋ง์ด ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- ๋ฉํ๊ด๋ฆฌ/์ฌ๋ผํ : ์์ฃผ ์ฌ๊ธฐ, ํน ์ฌ๊ธฐ, ์ฌ์ด์ผ ๊ณต๋ถ๋ ํ ์ ์๋ค.
- ์คํ๋ง vs db vs ์ธํ๋ผ : ํ์ฌ, ํ๋ง๋ค ๋ค๋ฅด๊ฒ ์ง๋ง ์ ์ ์ ์ฅ์์ ์คํ๋ง/DB์ ์ง์คํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
- ํ๋ก์ ํธ๋ ์ด๋ป๊ฒ?
- ๊ธฐํ์,๋์์ด๋๊ฐ ์์ผ๋ฉด ์ข๋ค. view๊ฐ ์๋ค๋ฉด API ๋ง ์์ด๋ ์ฝ๋๊ฐ ์ข์ ๊ฒ์ ํฐ๊ฐ ๋๋ค.
- ๋ชจ๋ ๊ฒ์ ๋ค ์ํ๊ธด ์ด๋ ต๋ค. ํ ๊ฐ๋ฅผ ํ๋๋ผ๋ ์ ์ด ๊ธฐ์ ์ ์ ํํ๊ณ ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ณ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์์ผ ํ๋ค.
...(์๋ต)
๋๊ธ2