1

我正在与

  • 摇篮
  • 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
}
4

0 回答 0