У меня есть одна странная проблема, которая заключается в том, что мой макет вызывает фактическую реализацию кода.Я тестирую свой класс контроллера, который имеет простую конечную точку 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 (.....))
Он вызывает реальный метод, даже если он должен издеваться над заданием этого метода, я не уверен, почему это вызывает фактическую реализацию метода.