์๋ก
WebMvcTest๋ฅผ ์ด์ฉํ์ฌ ํ ์คํธ๋ฅผ ์ํํ๋ ค ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๊ตฌ์ ํจ๊ป ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:377)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:135)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:693)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1332)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': JPA metamodel must not be empty
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
Application์ @EnableJpaAuditing์ ์์ฑํ๋๋ฐ ์ด์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์๋๊น ์์ฌ์ด ๋ ๋ค.
์ฐ์ @WebMvcTest๋ฅผ ์ํํ ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ์๊ฐํด๋ณผ ์ ์๋ค.
@WebMvcTest๋Spring ์ปจํ ์ด๋๋ฅผ ์๊ตฌํ๋ค.
์ด ๋๋ฌธ์ Applicationํด๋์ค๋ฅผ ๋ก๋ํ๋ฉด์ @EnableJpaAuditing์ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ด๊ฒ ์ ๋ฌธ์ ๊ฐ ๋๋๊ฐ?
WebMvcTest์ ๊ฐ์ ์ฌ๋ผ์ด์ค ํ ์คํธ๋ฅผ ์ํํ ๊ฒฝ์ฐ ๋ณ๋๋ก Import๋ฅผ ํ์ง ์๋ ์ด์ Jpa์ ์ฐ๊ด๋ Bean๋ค์ ๋ก๋ํ์ง ์๋๋ค.
์ด ๋๋ฌธ์ @EnableJpaAuditing์์ ์๊ตฌํ๋ Jpa ๊ด๋ จ Bean์ ๋ฑ๋กํ ์ ์๋ ํ์์ด ๋ฐ์ํ๋ค.
๋๊ฐ์ง ํด๊ฒฐ๋ฐฉ๋ฒ์ด ์๋ค.
1. @MockBean์ผ๋ก Jpa ์ฐ๊ด Bean ๋ฑ๋กํ๊ธฐ
@MockBean(JpaMetamodelMappingContext.class)
์ ๋ฐฉ๋ฒ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ์ง๋ง ๋ชจ๋ ํ ์คํธ์ ํด๋น ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌ์ค์ผํ๊ณ , ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ์ ๋ํ ์ถ๊ฐ์์ ์ ์งํํด์ผํ๋ ๋ถ๋ถ์ด ๋ง์์ ๋ค์ง ์๋๋ค.
2. @Configuration์ผ๋ก ํ ์คํธ์ ๊ฒฉ๋ฆฌํ๊ธฐ
Applicationํด๋์ค๋ฅผ ๋ก๋ํ๋ฉด์ ์๊ธด ๋ฌธ์ ๊ธฐ ๋๋ฌธ์ Configuration์ผ๋ก ์ค์ ์ Applicaiton ํด๋์ค์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค.
์ด๋ ๊ฒํ๋ฉด ์ฌ๋ผ์ด์คํ ์คํธ๋ฅผ ์ํํ ๋ ๋ณ๋์ Import๋ฅผ ํ์ง ์๋ ์ด์ @EnableJpaAuditing์ ๋ํ ์ถ๊ฐ์์ ์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
Reference
https://velog.io/@suujeen/Error-creating-bean-with-name-jpaAuditingHandler