gpt4 book ai didi

java - 如何使用 MockMvc 向模拟 Controller 发送 http 请求?

转载 作者:行者123 更新时间:2023-11-28 20:01:15 24 4
gpt4 key购买 nike

我有这门课要测试。此测试使用 mockMvc 对象。我认为这个对象发送 http 请求,这些请求处理配置从 pathToFile.xml

获取的 Controller
    @ContextConfiguration(locations = { "classpath:/pathToFile.xml" })
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class CandidateControllerTest {
@Autowired
WebApplicationContext wac;

MockMvc mockMvc;

@Before
public void before() {
mockMvc = MockMvcBuilders.webApplicationContextSetup(wac).build();

}
...
}

我认为有时我想将 Controller 与其他配置一起使用。

这是什么意思?

CandidateControllerTest 测试 CandidateController 类的方法

@Controller
CandidateController{

@Autowire
CandidateService candidateService;

@RequestMapping("/path")
public string handleSomething(Model model){
...
candidateService.doSomething();
...
return "viewName"

}

}

我想模拟 candidateService 使用模拟的 candidateService 向 Controller 发送 http 请求

真的吗?

最佳答案

在您的 CandidateController 类中为 candidateService 创建一个 setter。

在您的 CandidateControllerTest 中,从 WebApplicationContext 获取 CandidateController bean 并使用 setter 设置模拟。

CandidateService candidateServiceMock = ...; // mock it
CandidateController cc = (CandidateController) wac.getBean(CandidateController.class);
cc.setCandidateService(candidateServiceMock);

我不推荐这个。如果您只是简单地测试 CandidateController 自己,这会很好。但是你在 MockMvc 后面测试它,这是集成测试。模拟不属于正在测试的堆栈。

关于java - 如何使用 MockMvc 向模拟 Controller 发送 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409988/

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