All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mockk.impl.recording.states.StubbingAwaitingAnswerState.kt Maven / Gradle / Ivy

package io.mockk.impl.recording.states

import io.mockk.Answer
import io.mockk.ConstantAnswer
import io.mockk.impl.log.Logger
import io.mockk.impl.recording.CommonCallRecorder
import io.mockk.impl.stub.AdditionalAnswerOpportunity

class StubbingAwaitingAnswerState(recorder: CommonCallRecorder) : CallRecordingState(recorder) {
    override fun answer(answer: Answer<*>) {
        val calls = recorder.calls

        var answerOpportunity: AdditionalAnswerOpportunity? = null

        for ((idx, recordedCall) in calls.withIndex()) {
            val lastCall = idx == calls.size - 1

            val ans = if (lastCall) {
                answer
            } else if (recordedCall.isRetValueMock) {
                ConstantAnswer(recordedCall.retValue)
            } else {
                continue
            }

            answerOpportunity = recorder.stubRepo.stubFor(recordedCall.matcher.self)
                .addAnswer(recordedCall.matcher, ans)
        }

        calls.clear()

        log.trace { "Done stubbing. Still accepting additional answers" }

        recorder.state = recorder.factories.answeringStillAcceptingAnswersState(recorder, answerOpportunity!!)
    }

    companion object {
        val log = Logger()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy