【问题标题】:How to test spring RESTful MVC controller methods?如何测试spring RESTful MVC控制器方法?
【发布时间】:2015-04-24 21:53:21
【问题描述】:

我在 Spring Tool Suite IDE 中创建了一个简单的 Spring MVC 项目,所以项目的结构是

我需要测试我的控制器方法,例如

    @RequestMapping(value = "/references/{id}", method = RequestMethod.GET)
    public @ResponseBody GAReference getReference(@PathVariable("id") int id) { 
        return server.getReference(id);
    }

server 是一个接口,它有实现(ServerTestImpl),并且在 MainControllerContext.xml 中存储了一个 ServerTestImpl bean。

我希望我的测试类看起来像 answer,但我的项目结构中没有 springDispatcher-servlet.xml。 所以,我觉得可能是这样的

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/MainControllerContext.xml")
@WebAppConfiguration
public class MainControllerTest {

    private MockMvc mockMvc ;

    @Autowired
    WebApplicationContext wac;

    @Autowired
    private ServerTestImpl server;

    @Before
    public void setUp() {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).dispatchOptions(true).build();
    }


    @Test
    public void testGetReference() {    
         try {
            mockMvc.perform(get("/references/5"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$", hasSize(2)))
            .andExpect(jsonPath("$[0].id", is(1)))
            .andExpect(jsonPath("$[0].description", is("Lorem ipsum")))
            .andExpect(jsonPath("$[0].title", is("Foo")))
            .andExpect(jsonPath("$[1].id", is(2)))
            .andExpect(jsonPath("$[1].description", is("Lorem ipsum")))
            .andExpect(jsonPath("$[1].title", is("Bar")));      
        } catch (Exception e) {
            e.printStackTrace();
        }       
    }

}

如何使用此项目结构测试我的控制器? 谢谢。

【问题讨论】:

  • 有问题吗?
  • 现在有,谢谢你的评论。
  • 对方法进行单元测试?或者测试 Spring 注释?还是两者兼而有之?

标签: java spring spring-mvc


【解决方案1】:

在设置中尝试下面的代码 sn-p

@之前 public void setUp($basecontroller controllerobj)
{ this.mockMvc = MockMvcBuilders.standAloneSetup(controllerobj).dispatchOptions(true).build(); }

$basecontroller = 与其他控制器位于同一包中的控制器的基本控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多