Как запустить spek-тест с помощью kotlin, чтобы проверить, была ли вызвана запись метода HTTP? Что меня сбивает с толку, так это то, что у меня проблемы с макетированием контекста. Я хотел бы передать метод, отличный от HttpMethod.POST, чтобы запустить блок else.
В настоящее время происходит сбой с сообщением -
handlers.AHandlerTest > initializationError FAILED
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class ...handlers.AHandler
Mockito cannot mock/spy because :
- final class
at handlers.AHandlerTest$1.invoke(AHandlerTest.kt:76)
at handlers.AHandlerTest$1.invoke(AHandlerTest.kt:17)
Также не получается сказать, что context.request не может быть нулевым
import ratpack.handling.Context
class AHandler : Handler {
override fun handle(contex: Context) {
when (contex.request.method) {
HttpMethod.POST -> create(contex)
else -> {
contex.response.status(405)
contex.render("Unsupported method. Supported methods are: POST")
}
}
}
}
тестовый файл:
package handlers
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.verify
import handlers.AHandler
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
import ratpack.handling.Context
import org.mockito.Mockito
import ratpack.http.HttpMethod
import kotlin.test.assertEquals
import kotlin.test.assertFails
class AHandlerTest: Spek({
val context = mock<Context>()
val httpReq = mock<Context> {
on { context.request.method }.doReturn(HttpMethod.DELETE)
}
describe("testing handler function") {
it("it should fail when not given a post method") {
}
}
})
context
, вы указываете, что возвращает егоrequest
? - person Bananon   schedule 06.12.2019AHandler
является окончательным, поэтому вы не можете над ним издеваться. Кроме того, похоже, что вы тестируетеAHandler
, поэтому вам не следует над ним издеваться. - person Bananon   schedule 06.12.2019