DCI ํจํด์ด๋?
DCI ํจํด์ด๋ Describe
Context
It
์ ์ฝ์๋ก ์ผ์ข
์ ํ
์คํธ ์ฝ๋ ์์ฑ ํจํด์ด๋ค.
Given
When
Then
๊ณผ ๋น์ทํ์ง๋ง ๋ฏธ๋ฌํ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
Describe
์ค๋ช ํ ํ ์คํธ ๋์์ ๋ช ์ํ๋ค.- e.g. ํ ์คํธ ๋์์ ํด๋์ค, ๋ฉ์๋๋ช
Context
ํ ์คํธ ๋์์ด ๋์ธ ์ํฉ์ ์ค๋ช ํ๋ค.- e.g. ํ ์คํธ ๋์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ
It
ํ ์คํธ ๋์์ ํ๋์ ์ค๋ช ํ๋ค.- e.g. ํ ์คํธ ๋์ ๋ฉ์๋์ ๋ฐํ๊ฐ
DCI ํจํด์ ์ฅ์
- ํ ์คํธ ์ฝ๋๋ฅผ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋ง๋ค์ด ์ค๋ค.
- ํ ์คํธ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ฝ์ ๋ ๋ฒ์๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋๋ค.
- ์์ฑํ์ง ๋ชปํ ํ ์คํธ ์ฝ๋๋ฅผ ์ฐพ๊ธฐ ์ฝ๋ค.
JUnit5 @Nested ํ์ฉ
@Nested
class changeSlackUrl_๋ฉ์๋๋ {
@Nested
class ์กด์ฌํ๋_Job์_์
๋ ฅ_๋ฐ๋_๊ฒฝ์ฐ {
private static final String SLACK_URL = "http://slackurl.com";
private static final String NEW_SLACK_URL = "https://newslackurl.com";
private final Host host = repository.save(Host_์์ฑ("1234", 1234L));
private final Space space = repository.save(Space_์์ฑ(host, "์ ์ค"));
private final Job job = repository.save(Job_์์ฑ(space, "ํฑ์ค๋ธ์ค์๋ฐฉ", SLACK_URL));
private final SlackUrlChangeRequest request = new SlackUrlChangeRequest(NEW_SLACK_URL);
@Test
void Slack_Url์_์์ ํ๋ค() {
jobService.changeSlackUrl(host.getId(), job.getId(), request);
Job actual = repository.getById(Job.class, job.getId());
assertThat(actual.getSlackUrl()).isEqualTo(NEW_SLACK_URL);
}
}
}
JUnit5
์ @Nested
๋ฅผ ํ์ฉํด Java
์์๋ ์ด๋ฐ ๊ณ์ธตํ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
๊ณ์ธตํ์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ค๋ฉด ์์ฒ๋ผ ํ ์คํธ ๋์ ๋ฉ์๋๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
์ด๋ ๋๋ฝ๋ ํ ์คํธ๋ฅผ ์ฐพ๊ฑฐ๋ ์๋ก์ด ํ ์คํธ๋ฅผ ์ถ๊ฐํ ๋ ์๋นํ ํธํ๋ค.
ํ ์คํธ๋ฅผ ์คํํ ๋๋ ์คํจํ๋ ์ผ์ด์ค๋ฑ์ ์ฐพ์ ๋ ํจ์ฌ ์์ํ๊ฒ ์ฐพ์ ์ ์๋ค.