首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MockMvc测试达不到控制器

MockMvc测试达不到控制器
EN

Stack Overflow用户
提问于 2020-10-05 13:48:17
回答 2查看 1.4K关注 0票数 1

我试了很多次,但不幸的是没有成功。我不明白为什么我不能到达我的控制器,我必须通过独立设置运行这个测试,因为我没有一个SpringBoot项目。

这是我的考试课:

代码语言:javascript
运行
复制
@RunWith(SpringJUnit4ClassRunner.class)
public class HelpPageControllerTest {

    @Mock
    private HelpService helpService;

    private MockMvc mockMvc;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        this.mockMvc = MockMvcBuilders
                .standaloneSetup(new HelpPageController())
                .build();
    }

    @Test
    public void justATest() throws Exception {
        ResultActions resultActions = mockMvc.perform(get("/help/manuals?lang=de"));
        resultActions.andExpect(status().isOk());
    }
}

这是我想要达到的API:

代码语言:javascript
运行
复制
      @GetMapping("/help/manuals")
      public ResponseEntity<List<ManualResponseTO>> getManuals(@RequestParam String lang) {
       List<ManualResponseTO> manuals;
       manuals = this.helpService.getManuals(lang);
       return new ResponseEntity<>(manuals, HttpStatus.OK);
     }

通过测试,我得到了这样的答案:

当我进入调试模式时,我可以看到mockMvc已经初始化了,但是我也在控制器中设置了一个调试点,但是我无法达到这个目的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-05 14:02:51

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)
@WebMvcTest(HelpPageController.class)
public class HelpPageControllerTest {

    @Autowired
    private MockMvc mockMvc;

    ...
}

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)
@WebMvcTest(HelpPageController.class)
public class HelpPageControllerTest {

    private MockMvc mockMvc;

    @Autowired
    private HelpPageController helpPageController;

    @Before
    public void setUp() {
        this.mockMvc = MockMvcBuilders
            .standaloneSetup(helpPageController)
            .build();
    }

    ...
}

依赖性

代码语言:javascript
运行
复制
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
票数 1
EN

Stack Overflow用户

发布于 2020-10-06 05:13:31

我找到解决办法了。我需要一个测试上下文配置。

testContext.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

现在我也在嘲笑我的服务。这是我需要的代码:

代码语言:javascript
运行
复制
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(locations = "classpath*:testContext.xml")
public class HelpPageControllerTest {

    private MockMvc mockMvc;

    @Mock
    private HelpService helpService;

    @InjectMocks
    private HelpPageController helpPageController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        this.mockMvc = MockMvcBuilders
                .standaloneSetup(helpPageController)
                .build();
    }

    @Test
    public void justATest() throws Exception {
        List<ManualResponseTO> manualResponseTOS = new ArrayList<>();
        when(helpService.getManuals("de")).thenReturn(manualResponseTOS);
        ResultActions resultActions = mockMvc.perform(get("/manuals?lang=de"));
        resultActions.andExpect(status().isOk());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64209949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档