Mockito .when` (....) вызывает фактическую реализацию.? - PullRequest
1 голос
/ 16 мая 2019

У меня есть одна странная проблема, которая заключается в том, что мой макет вызывает фактическую реализацию кода.Я тестирую свой класс контроллера, который имеет простую конечную точку POST.Здесь я хотел бы объяснить в шаге.Обратите внимание, что я использую Kotlin и Spring boot (весна 5).Вот мой класс контроллера

@RestController
class MyController(val delegate: DelegateTask) { 

    @PostMapping(value = ["/x1/myprofile/xyzz"], produces = [MediaType.APPLICATION_JSON_VALUE])
    fun doSomething(@RequestHeader("id",  required = false) id: String?,
                    @RequestHeader("oid", required = false) oid: String?,
                    @RequestHeader("username") userName: String,
                    @RequestHeader("cache-access", required = false) cacheAccess: String?,
                    @RequestBody(required = true) reqPayload: RequestPayload,
                    request: HttpServletRequest): ResponseObject {
        val result = delegate.myjob(id, oid, userName, cacheAccess, reqPayload)
        return result.responseObject
    }
}

Теперь перейдем к моему тесту

@RunWith(SpringRunner::class)
@SpringBootTest
@AutoConfigureMockMvc
class MyControllerTest {

var delegator:DelegateTask = mock()

@Test
    fun testMyController(){
         Mockito.`when`(delegator.myjob("mockid","mockoid","mockUName",
                "cache",mockRequestPayload())).thenReturn(getResourceAsMockResponse().result.responseObj)

 var result = mockMvc.perform(
            MockMvcRequestBuilders.post("/x1/myprofile/xyzz")
                    .header("id", "mockid")
                    .header("oid", "mockoid")
                    .header("username", "someuser")
                    .contentType("application/json")
                    .content(Gson().toJson(mockReqData())))
            .andExpect(MockMvcResultMatchers.status().isOk)
            .andExpect { }
            .andReturn()

}

Когда я звоню

Mockito. when (делегат.myjob (.....))

Он вызывает реальный метод, даже если он должен издеваться над заданием этого метода, я не уверен, почему это вызывает фактическую реализацию метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...