检查@RequestMapping - 单元测试

Jul*_* Cz 2 java tdd unit-testing spring-mvc

我有一个任务要做:这个控制器应该有自己的单元测试来验证,即@RequestMapping设置为/ api / report / article_pairs.

 @RestController
 @RequestMapping("/api/report/article_pairs")
 public class ArticlePairsController extends ReportController<ArticlePairs>{

public ArticlePairsController(HttpReportExecutor<ArticlePairs> articlePairs) {
    super(articlePairs);
}

@PostMapping()
public HttpEntity<Void> proceed(@RequestBody ArticlePairs articlePairs) {

    articlePairs.setDbconn(schemaName + "." + CENTRALA);

    return executeReport(articlePairs, "report.articlePairs");
  }
}
Run Code Online (Sandbox Code Playgroud)

如果将来有人改变这个值,单元测试应该显示这一点。

单元测试对我来说是一个新问题,所以我可以寻求一些建议吗?先感谢您。

小智 5

您没有说明您正在使用哪个版本的 Spring,但如果它大于 3.2,您可以设置一个简单的单元测试,仅测试给定的控制器而不是整个上下文,如下所示:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

@RunWith(SpringJUnit4ClassRunner.class)
public class SitemapControllerTest {

    private MockMvc mvc;

    @Before
    public void setup() {
        mvc = MockMvcBuilders.standaloneSetup(SitemapControllerTest.class).build();
    }

    @Test
    public void testHappyPath() throws Exception {

        mvc.perform(post("/api/report/article_pairs")
                .content("{yourjsoncontent}")
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());
    }
}
Run Code Online (Sandbox Code Playgroud)