我正在与
- 摇篮
- Spring MVC 测试
- 斯波克核心
- 斯波克弹簧
- 斯波克报告
在某些规范中,我有以下内容:
我能够做到以下几点:
def ResultActions resultActions // instance variables
def MockHttpServletResponse mockHttpServletResponse // instance variables
…
@Unroll(value="#methodNameReport Expected")
def "something"(){
….
when: "GET"
resultActions = mockMvc.perform(get(url, PersonaControllerHelper.ID)).andDo(print())
mockHttpServletResponse = resultActions.andReturn().getResponse()
println mockHttpServletResponse
println mockHttpServletResponse.getStatus()
}
到这里为止,我可以安心MockHttpServletResponse
上课并打印一些数据。因此MockHttpServletResponse
不是 null。
但后来:
where: "."
urlReport << [PersonaXmlFindOneWithProducesControllerTemplateFactory.findOneRequestParamById(PersonaControllerHelper.ID)]
classNameReport << [PersonaXmlFindOneWithProducesController.class.getSimpleName()]
methodNameReport << ["findOneRequestParamById"]
statusReport << [mockHttpServletResponse.getStatus()]
mediaTypeReport << [MediaType.APPLICATION_XML_VALUE]
我明白了
PersonaXmlFindOneWithProducesControllerTest.groovy: 90:
Only @Shared and static fields may be accessed from here @ line 90, column 21.
statusReport << [mockHttpServletResponse.getStatus()]
即使我将变量声明为静态或使用@Shared
我明白了
…..PersonaXmlFindOneWithProducesControllerTest > findOneRequestParamById Expected FAILED
java.lang.NullPointerException at PersonaXmlFindOneWithProducesControllerTest.groovy:90
美妙的 NullPointerException。
需要什么配置设置呢?
Α
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
def String url
def String urlReport
def String methodNameReport
def String statusReport
def ResultActions resultActions
def @Shared MockHttpServletResponse mockHttpServletResponse
def setup(){
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Unroll(value="#methodNameReport Expected")
def "findOneRequestParamById Expected"(){
given: "URL: #urlReport"
url = PersonaXmlFindOneControllerURLURIFactory.findOneRequestParamById()
when: "GET"
resultActions = mockMvc.perform(get(url, PersonaControllerHelper.ID)).andDo(print())
mockHttpServletResponse = resultActions.andReturn().getResponse()
println mockHttpServletResponse //prints
println mockHttpServletResponse.getStatus() //prints
then: "Exists - Status: #statusReport"
resultActions.andExpect(status().isOk())
where: "."
urlReport << [PersonaXmlFindOneControllerTemplateFactory.findOneRequestParamById(PersonaControllerHelper.ID)]
methodNameReport << ["findOneRequestParamById"]
statusReport << [mockHttpServletResponse.getStatus()] // Fails
}