[SPRING] 테스트 목적으로 스프링 부트에서 db connection을 모의 (mock) 할 수 있습니까?
SPRING테스트 목적으로 스프링 부트에서 db connection을 모의 (mock) 할 수 있습니까?
상태:
다음은 코드입니다.
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Application.class, Swagger2MarkupTest.class}, loader = SpringApplicationContextLoader.class)
@ActiveProfiles("test")
public class Swagger2MarkupTest {
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Autowired
protected Environment env;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build();
}
@Test
public void convertSwaggerToAsciiDoc() throws Exception {
this.mockMvc.perform(get("/v2/api-docs").accept(MediaType.APPLICATION_JSON))
.andDo(Swagger2MarkupResultHandler.outputDirectory("target/docs/asciidoc/generated")
.withExamples("target/docs/asciidoc/generated/exampless").build())
.andExpect(status().isOk());
}
}
데이터베이스 구성을로드하지 않고 테스트를 실행하려면 어떻게해야합니까? 이것이 가능한가?
해결법
-
==============================
1.일반 Spring 기능을 사용하여 Spring bean을 위조하는 옵션이 있습니다. @Primary, @Profile 및 @ActiveProfiles 주석을 사용해야합니다.
일반 Spring 기능을 사용하여 Spring bean을 위조하는 옵션이 있습니다. @Primary, @Profile 및 @ActiveProfiles 주석을 사용해야합니다.
주제에 대한 블로그 글을 썼습니다.
실제 데이터 소스를 대체하기 위해 메모리 DB (예 : H2)에서 사용할 수 있습니다. 이 같은:
@Configuration public class TestingDataSourceConfig { @Bean @Primary public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .generateUniqueName(true) .setType(H2) .setScriptEncoding("UTF-8") .ignoreFailedDrops(true) .addScript("schema.sql") .addScripts("user_data.sql", "country_data.sql") .build(); } }
from https://stackoverflow.com/questions/35707469/how-can-i-mock-db-connection-in-spring-boot-for-testing-purpose by cc-by-sa and MIT license