Reputation: 2149
I am using spring rest docs to create the documentation, my problem is that the test is working when I have both the test and the controller in the same folder:
But when I try to change the controller from this package and move it to the controllers one I am getting the next issue:
MockHttpServletRequest:
HTTP Method = GET
Request URI = /
Parameters = {}
Headers = {}
Body = <no character encoding set>
Session Attrs = {}
Handler:
Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandler
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 404
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []
MockHttpServletRequest:
HTTP Method = GET
Request URI = /
Parameters = {}
Headers = {}
Body = <no character encoding set>
Session Attrs = {}
Handler:
Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandler
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 404
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []
java.lang.AssertionError: Status
Expected :200
Actual :404
MY controller class looks like:
package com.espn.csemobile.espnapp.test.units.controllers
import java.util.Collections
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class HomeController {
@GetMapping("/")
fun greeting(): Map<String, Any> {
return Collections.singletonMap<String, Any>("message", "Hello World")
}
}
And my test class:
package com.espn.csemobile.espnapp.test.units.controllers
import org.hamcrest.Matchers.containsString
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document
import org.springframework.test.context.junit4.SpringRunner
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import org.springframework.test.web.servlet.result.MockMvcResultHandlers.print
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.content
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
@RunWith(SpringRunner::class)
@WebMvcTest(HomeController::class, secure = false)
@AutoConfigureRestDocs(outputDir = "target/snippets")
class WebLayerTest {
@Autowired
private val mockMvc: MockMvc? = null
@Test
@Throws(Exception::class)
fun shouldReturnDefaultMessage() {
this.mockMvc!!.perform(get("/")).andDo(print()).andExpect(status().isOk)
.andExpect(content().string(containsString("Hello World")))
.andDo(document("home"))
}
}
The test fails only when the files are in a different location. Any ideas?
Upvotes: 1
Views: 474