如何在Spring Boot中模拟db连接以进行测试?

情况:

  1. 我使用Spring CloudSpring Boot一个微服务,即微服务加载的是DB的配置信息来配置的连接。
  2. 我创建了一个测试,以获取Swagger用于文档的其余接口。
  3. 我想要禁用数据库配置的加载,因为这不是必需的。

这是代码:

@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());

}

}

如何在不加载数据库配置的情况下运行测试?这可能吗?

回答:

有一个选项可以伪造仅具有纯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();

}

}

以上是 如何在Spring Boot中模拟db连接以进行测试? 的全部内容, 来源链接: utcz.com/qa/401377.html

回到顶部