@MockBean ๋์ mock ๊ฐ์ฒด๋ฅผ ์ง์ ๋ฑ๋กํ๊ณ ์ถ์ ๋Spring Boot 3.4๋ถํฐ @MockBean์ด deprecated ๋์๊ธฐ ๋๋ฌธ์,
ํ ์คํธ์์ ์ง์ Mockito mock ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด Spring ์ปจํ ์ด๋์ ๋ฑ๋กํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค.
java
๋ณต์ฌํธ์ง
@Autowired
private ConfigurableApplicationContext context;
private SlackNotifier slackNotifier;
@BeforeEach
void setUpMocks() {
slackNotifier = Mockito.mock(SlackNotifier.class);
TestPropertyValues.of("spring.main.allow-bean-definition-overriding=true")
.applyTo(context);
context.getBeanFactory()
.registerSingleton("slackNotifier", slackNotifier);
}
| ์์ | ์ฝ๋ | ์ค๋ช |
|---|---|---|
| 1๏ธโฃ | ConfigurableApplicationContext context |
Spring ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๋ ๊ฐ์ฒด (Bean ๋ฑ๋ก ๊ฐ๋ฅ) |
| 2๏ธโฃ | Mockito.mock(SlackNotifier.class) |
ํ ์คํธ์ฉ ๊ฐ์ง ๊ฐ์ฒด(mock) ์์ฑ |
| 3๏ธโฃ | allow-bean-definition-overriding=true |
๊ธฐ์กด์ ๋ฑ๋ก๋ Bean์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ฎ์ด์ธ ์ ์๊ฒ ์ค์ |
| 4๏ธโฃ | registerSingleton("slackNotifier", slackNotifier) |
Spring์๊ฒ "slackNotifier"๋ผ๋ ์ด๋ฆ์ผ๋ก mock ๊ฐ์ฒด ๋ฑ๋ก (์ค์ ์๋น์ค ๋น ๋์ฒด) |
| ์ด์ | ์ค๋ช |
|---|---|
@MockBean์ deprecated |
Spring Boot 3.4 ์ด์์์ ๋ ์ด์ ๊ถ์ฅ๋์ง ์์ |
| ๋ช ์์ ์ธ Bean ๋ฑ๋ก | ํ ์คํธ์์ ์ด๋ค mock์ด ์ด๋ค ์ด๋ฆ์ผ๋ก ๋ฑ๋ก๋๋์ง ๋ช ํํ๊ฒ ๊ด๋ฆฌ ๊ฐ๋ฅ |
| ์ค์ ์๋น์ค์ฉ Bean์ ๊ฐ์ง๋ก ๋์ฒด | SlackNotifier์ฒ๋ผ ์ค์ ๋ก ์ธ๋ถ ์์ฒญ์ด ๋๊ฐ๋ ์ปดํฌ๋ํธ๋ฅผ ํ
์คํธ์์ ๋ง๊ณ ์ถ์ ๋ ํ์ |
allow-bean-definition-overriding=true ํ์"slackNotifier" ๋ผ๋ ์ด๋ฆ ์ ํํ ์ผ์นํด์ผ ๋์ฒด๋จregisterSingleton์ BeanFactory ์์ค์์ ๊ฐ์ ๋ฑ๋กํ๋ ๋ฉ์๋ (์ฑ๊ธํค๋ง ๊ฐ๋ฅ)