gpt4 book ai didi

java - 如何为我的 Controller 配置测试类以使用嵌入式 Mongo?

转载 作者:行者123 更新时间:2023-11-30 05:18:32 25 4
gpt4 key购买 nike

如果我的问题太明显,我很抱歉,但我是 Spring 新手。我的应用程序上有两个属性配置文件。一个名为 application.properties,具有我的生产数据库的配置设置,另一个名为 application-test.properties,它存储我的 Embedded 的信息我运行它来测试我的应用程序的 Mongo db。我还有一个名为 ExpertRepository.java 的存储库类,如下所示:

import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface ExpertRepository extends MongoRepository<Experts, String>{
Experts findBy_id(ObjectId _id);

}

为了测试我的存储库,我编写了以下类,它使用 application-test.properties 文件运行集成测试,因此我的嵌入式 Mongo 数据库:


@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)
@DataMongoTest
public class ExpertRepositoryTest {

@Autowired
private ExpertRepository repository;

@Autowired
private MongoTemplate mongoTemplate;

@Test
public void testSaveAndFindExpert() throws Exception {

... } }

现在我想测试我的 Controller 类,为此我想使用我指定用于测试目的的 EmbeddedMongo 数据库。这就是我的 ExpertControllerTest.java 类现在的样子:


@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = ExpertController.class)
class ExpertControllerTest {
@Autowired
private MockMvc mockMvc;

@Autowired
private ObjectMapper objectMapper;

@MockBean
private ExpertRepository expertRepo;


Experts demoExpert = new Experts(ObjectId.get(),"Steve Jobs", "Enterpreneur",
Availability.BUSY, Language.CHINESE);


@Test
public void getExperts() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/experts/")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk());

}

我如何将此类与我的嵌入式 Mongo 连接起来,并可能用一些数据预填充它来测试我的其余方法?预先感谢您的帮助

最佳答案

如果您使用 Spring 2.x 并包含在您的 gradle 中

testImplementation“de.flapdoodle.embed:de.flapdoodle.embed.mongo”

你的测试和mongo的测试实例之间的绑定(bind)应该是自动的

关于java - 如何为我的 Controller 配置测试类以使用嵌入式 Mongo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59930365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com