Spring 如何模拟POST参数和模型属性?
我正在使用SpringMVC框架,我想用JUnit测试我的控制器。我应该如何模拟发布或获取控制器的参数,以及如何访问模型的属性以检查其内容?我的控制器的签名如下:Spring 如何模拟POST参数和模型属性?,spring,testing,model-view-controller,junit,Spring,Testing,Model View Controller,Junit,我正在使用SpringMVC框架,我想用JUnit测试我的控制器。我应该如何模拟发布或获取控制器的参数,以及如何访问模型的属性以检查其内容?我的控制器的签名如下: @RequestMapping(value="/findings", method=RequestMethod.POST) public String findUsers(@RequestParam("userInput") String userInput, Model m) 您可以使用spring-test和mockito以及j
@RequestMapping(value="/findings", method=RequestMethod.POST)
public String findUsers(@RequestParam("userInput") String userInput, Model m)
您可以使用
spring-test
和mockito
以及junit
来完成任务
spring测试
使您能够在spring中测试控制器和一系列其他东西
mockito
是创建模拟类的一个很好的库
这是对控制器单元测试的高度概括。这可能不适合你的情况,但应该给你一个起点
public class SomeControllerTest {
private SomeController controller;
@Mock
private View view;
private MockMvc mockMvc;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.setSingleView(view)
.build();
}
@Test
public void test() throws Exception {
ObjectMapper mapper = new ObjectMapper();
Model m = new Model();
MvcResult mvcResult = mockMvc.perform(post("/findings")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(m)))
.andExpect(status().isOK())
.andReturn();
}
}
为了做到这一点,我建议您进行一个简单的测试,在该测试中实例化控制器(您可以模拟所有依赖项),然后调用方法pasing Model
public class MyController (){
MyDependencyOne one;
MyDependencyTwo two ;
@Autowired
public MyController (MyDependencyOne one, MyDependencyTwo two){
this.one = one;
this.two = two;
}
public String findUsers(@RequestParam("userInput") String userInput, Model
m){
// do whatever
}
}
public class MyControllerTest (){
@Test
public void myTest(){
//MOCK your dependencies
MyController controller = new MyController(one, two);
Model model = new ExtendedModelMap()
controller.filter(model);
assertEquals("yourAtribute", model.asMap().get("yourAtribute");
}
}
您是否正在使用
spring test
?我将如何访问模型的属性以检查其内容是否符合预期?您的意思是如何检查控制器的响应?我想查看模型属性的值是否正确。这个值将显示在一个.jsp页面上,所以我想测试它是否工作正常如果我查看传入模型的方法,会有什么改变这个值?控制器的结果是一个字符串,通常您会检查字符串的值是否与给定特定模型的预期值匹配