I am trying to create test for my Spring boot Controllers ,below is my code. This code works fine , when controllers don't have any services . but if I call a controller that have services injected in them, I gives me null in response.
So, `
Controller test(without Service)---> Response 200 response OK
Controller test(with Service)---> Response 200 response null
Testing tool:Spock
FrameWork:Spring boot
Below is my code
import com.oodlestechnologies.blog.controllers.test.TestController
import com.oodlestechnologies.blog.services.employee.EmployeeService
import groovy.json.JsonSlurper
import org.springframework.boot.test.SpringApplicationContextLoader
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.MockMvcBuilder
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import spock.lang.Specification
import spock.lang.Subject
import static org.springframework.http.HttpStatus.*
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup
class EmployeeControllerSpec extends Specification{
def employeeService = Mock(EmployeeService)
def employeeController = new EmployeeController(employeeService: employeeService)
// Mock MVC
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(employeeController).build()
def setup(){
println("Controller: "+employeeController)
println("Service: "+employeeService+"----")
employeeController.employeeService = employeeService;
println("Controller: "+employeeController+"----")
}
def "get Employee in json format when passed with employeeID"(){
when:"url is hit"
println(mockMvc)
def response = mockMvc.perform(get("/api/v1/employee/60").contentType("application/json")).andReturn().response
println(" Status: "+response.getStatus());
println(" Content: "+response.contentAsString);
then:"result return from employee controller"
}
}
Output:
Status: 200
Content:
`for simplycity i am just checking response
Aucun commentaire:
Enregistrer un commentaire