or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

argument-capturing.mdargument-matching.mdindex.mdmock-creation.mdspying.mdstubbing.mdverification.md
tile.json

tessl/maven-com-nhaarman-mockitokotlin2--mockito-kotlin

Helper functions to work with Mockito in Kotlin

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.nhaarman.mockitokotlin2/mockito-kotlin@2.2.x

To install, run

npx @tessl/cli install tessl/maven-com-nhaarman-mockitokotlin2--mockito-kotlin@2.2.0

index.mddocs/

Mockito-Kotlin

Mockito-Kotlin is a small library that provides helper functions to work with Mockito in Kotlin. It offers Kotlin-friendly APIs, extension functions, and DSL syntax that address Kotlin's null safety and type inference limitations when using the Java-based Mockito framework. The library enables more idiomatic and concise test code in Kotlin projects.

Package Information

  • Package Name: mockito-kotlin
  • Package Type: maven
  • Language: Kotlin
  • Installation: Add to your build.gradle: testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"

Core Imports

import com.nhaarman.mockitokotlin2.*

Or selective imports:

import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import com.nhaarman.mockitokotlin2.any

Basic Usage

import com.nhaarman.mockitokotlin2.*

@Test
fun doAction_doesSomething() { 
  // Given - Create mock with immediate stubbing
  val mock = mock<MyClass> {
    on { getText() } doReturn "text"
  }
  val classUnderTest = ClassUnderTest(mock)
  
  // When
  classUnderTest.doAction()
  
  // Then
  verify(mock).doSomething(any())
}

Architecture

Mockito-Kotlin is organized around several key areas:

  • Mock Creation: Type-safe mock creation with optional immediate stubbing
  • Argument Matching: Kotlin-friendly argument matchers with reified generics
  • Verification: Mockito verification with Kotlin extensions and coroutine support
  • Stubbing: Fluent stubbing API with Kotlin DSL and lambda support
  • Spying: Spy creation with type safety and immediate stubbing options
  • BDD Support: Behavior-driven development style functions

Capabilities

Mock Creation

Type-safe mock creation with extensive configuration options and immediate stubbing support. Essential for setting up test doubles in Kotlin.

inline fun <reified T : Any> mock(
    extraInterfaces: Array<out KClass<out Any>>? = null,
    name: String? = null,
    spiedInstance: Any? = null,
    defaultAnswer: Answer<Any>? = null,
    serializable: Boolean = false,
    serializableMode: SerializableMode? = null,
    verboseLogging: Boolean = false,
    invocationListeners: Array<InvocationListener>? = null,
    stubOnly: Boolean = false,
    useConstructor: UseConstructor? = null,
    outerInstance: Any? = null,
    lenient: Boolean = false
): T

inline fun <reified T : Any> mock(
    extraInterfaces: Array<out KClass<out Any>>? = null,
    name: String? = null,
    spiedInstance: Any? = null,
    defaultAnswer: Answer<Any>? = null,
    serializable: Boolean = false,
    serializableMode: SerializableMode? = null,
    verboseLogging: Boolean = false,
    invocationListeners: Array<InvocationListener>? = null,
    stubOnly: Boolean = false,
    useConstructor: UseConstructor? = null,
    outerInstance: Any? = null,
    lenient: Boolean = false,
    stubbing: KStubbing<T>.(T) -> Unit
): T

Mock Creation

Argument Matching

Powerful argument matchers designed for Kotlin's type system, providing type-safe matching with reified generics and null safety.

inline fun <reified T : Any> any(): T
inline fun <reified T : Any> anyOrNull(): T
inline fun <reified T : Any> anyVararg(): T
inline fun <reified T : Any?> anyArray(): Array<T>
inline fun <reified T : Any> argThat(noinline predicate: T.() -> Boolean): T
inline fun <reified T : Any> argThat(matcher: ArgumentMatcher<T>): T
inline fun <reified T : Any> argForWhich(noinline predicate: T.() -> Boolean): T
inline fun <reified T : Any> argWhere(noinline predicate: (T) -> Boolean): T
fun <T> eq(value: T): T
fun <T> same(value: T): T
inline fun <reified T : Any> isA(): T
fun <T : Any> isNull(): T?
fun <T : Any> isNotNull(): T?
fun <T : Any> notNull(): T?
inline fun <reified T : Any> refEq(value: T, vararg excludeFields: String): T
inline fun <reified T : Any> check(noinline predicate: (T) -> Unit): T

Argument Matching

Verification

Comprehensive verification system with support for coroutines, custom verification modes, and order-dependent verification.

fun <T> verify(mock: T): T
fun <T> verify(mock: T, mode: VerificationMode): T
fun <T> verifyBlocking(mock: T, f: suspend T.() -> Unit)
fun <T> verifyBlocking(mock: T, mode: VerificationMode, f: suspend T.() -> Unit)
fun <T> verifyNoMoreInteractions(vararg mocks: T)
fun verifyZeroInteractions(vararg mocks: Any)
fun <T> clearInvocations(vararg mocks: T)
fun times(numInvocations: Int): VerificationMode
fun atLeast(numInvocations: Int): VerificationMode
fun atLeastOnce(): VerificationMode
fun atMost(maxNumberOfInvocations: Int): VerificationMode
fun calls(wantedNumberOfInvocations: Int): VerificationMode
fun never(): VerificationMode
fun description(description: String): VerificationMode
fun after(millis: Long): VerificationAfterDelay
fun timeout(millis: Long): VerificationWithTimeout
fun ignoreStubs(vararg mocks: Any): Array<out Any>
fun only(): VerificationMode
fun inOrder(vararg mocks: Any): InOrder
inline fun inOrder(vararg mocks: Any, evaluation: InOrder.() -> Unit)
inline fun <T> T.inOrder(block: InOrderOnType<T>.() -> Any)
inline fun <T> verify(mock: T, block: VerifyScope<T>.() -> Unit)

Verification

Stubbing

Fluent stubbing API with Kotlin DSL support, lambda-based configuration, and comprehensive response configuration.

inline fun <T> whenever(methodCall: T): OngoingStubbing<T>
infix fun <T> OngoingStubbing<T>.doReturn(t: T): OngoingStubbing<T>
infix fun <T> OngoingStubbing<T>.doThrow(t: Throwable): OngoingStubbing<T>
infix fun <T> OngoingStubbing<T>.doAnswer(answer: (InvocationOnMock) -> T?): OngoingStubbing<T>

class KStubbing<out T>(val mock: T) {
    fun <R> on(methodCall: R): OngoingStubbing<R>
    inline fun <reified R : Any> onGeneric(noinline methodCall: T.() -> R?): OngoingStubbing<R>
    fun <T : Any, R> onBlocking(m: suspend T.() -> R): OngoingStubbing<R>
}

Stubbing

Argument Capturing

Type-safe argument capturing with Kotlin-friendly APIs and support for multiple argument capture patterns.

inline fun <reified T : Any> argumentCaptor(): KArgumentCaptor<T>
inline fun <reified T : Any> capture(captor: ArgumentCaptor<T>): T

class KArgumentCaptor<out T : Any?>(
    private val captor: ArgumentCaptor<T>,
    private val tClass: KClass<*>
) {
    val firstValue: T
    val lastValue: T
    val allValues: List<T>
    fun capture(): T
}

Argument Capturing

Spying

Spy creation with type safety and immediate stubbing options for testing real objects with selective method stubbing.

inline fun <reified T : Any> spy(): T
inline fun <reified T : Any> spy(stubbing: KStubbing<T>.(T) -> Unit): T
fun <T> spy(value: T): T
inline fun <reified T> spy(value: T, stubbing: KStubbing<T>.(T) -> Unit): T

Spying

Stubber Functions

Flexible stubbing configuration functions for advanced mock behavior setup.

fun <T> doAnswer(answer: (InvocationOnMock) -> T?): Stubber
fun doCallRealMethod(): Stubber
fun doNothing(): Stubber
fun doReturn(value: Any?): Stubber
fun doReturn(toBeReturned: Any?, vararg toBeReturnedNext: Any?): Stubber
fun doThrow(toBeThrown: KClass<out Throwable>): Stubber
fun doThrow(vararg toBeThrown: Throwable): Stubber
fun <T> Stubber.whenever(mock: T): OngoingStubbing<T>

BDD Support

Behavior-driven development style functions providing Given-When-Then syntax for more expressive tests.

fun <T> given(methodCall: T): BDDMyOngoingStubbing<T>
fun <T> given(methodCall: () -> T): BDDMyOngoingStubbing<T>
fun <T> then(mock: T): BDDMockito.Then<T>
infix fun <T> BDDMyOngoingStubbing<T>.will(value: Answer<T>): BDDMyOngoingStubbing<T>
infix fun <T> BDDMyOngoingStubbing<T>.willAnswer(value: (InvocationOnMock) -> T?): BDDMyOngoingStubbing<T>
infix fun <T> BDDMyOngoingStubbing<T>.willReturn(value: () -> T): BDDMyOngoingStubbing<T>
infix fun <T> BDDMyOngoingStubbing<T>.willThrow(value: () -> Throwable): BDDMyOngoingStubbing<T>

Core Utilities

Essential Mockito utility functions for mock management and validation.

fun validateMockitoUsage()
fun <T> reset(vararg mocks: T)
fun mockingDetails(toInspect: Any): MockingDetails

Types

// Mockito-Kotlin specific types
class UseConstructor private constructor(val args: Array<Any>) {
    companion object {
        fun parameterless(): UseConstructor
        fun withArguments(vararg arguments: Any): UseConstructor
    }
}

class MockitoKotlinException(message: String?, cause: Throwable?) : RuntimeException(message, cause)

class VerifyScope<out T>(val mock: T) {
    inline operator fun Int.times(call: T.() -> Unit)
}

class KStubbing<out T>(val mock: T) {
    fun <R> on(methodCall: R): OngoingStubbing<R>
    fun <R : Any> onGeneric(methodCall: T.() -> R?, c: KClass<R>): OngoingStubbing<R>
    inline fun <reified R : Any> onGeneric(noinline methodCall: T.() -> R?): OngoingStubbing<R>
    fun <R> on(methodCall: T.() -> R): OngoingStubbing<R>
    fun <T : Any, R> onBlocking(m: suspend T.() -> R): OngoingStubbing<R>
}

class KArgumentCaptor<out T : Any?>(
    private val captor: ArgumentCaptor<T>,
    private val tClass: KClass<*>
) {
    val firstValue: T
    val secondValue: T
    val thirdValue: T
    val lastValue: T
    val allValues: List<T>
    fun capture(): T
}

// Imported Mockito types
typealias Answer<T> = org.mockito.stubbing.Answer<T>
typealias ArgumentCaptor<T> = org.mockito.ArgumentCaptor<T>
typealias ArgumentMatcher<T> = org.mockito.ArgumentMatcher<T>
typealias BDDMyOngoingStubbing<T> = org.mockito.BDDMockito.BDDMyOngoingStubbing<T>
typealias InOrder = org.mockito.InOrder
typealias InvocationListener = org.mockito.listeners.InvocationListener
typealias InvocationOnMock = org.mockito.invocation.InvocationOnMock
typealias MockSettings = org.mockito.MockSettings
typealias MockingDetails = org.mockito.MockingDetails
typealias OngoingStubbing<T> = org.mockito.stubbing.OngoingStubbing<T>
typealias SerializableMode = org.mockito.mock.SerializableMode
typealias Stubber = org.mockito.stubbing.Stubber
typealias VerificationAfterDelay = org.mockito.verification.VerificationAfterDelay
typealias VerificationMode = org.mockito.verification.VerificationMode
typealias VerificationWithTimeout = org.mockito.verification.VerificationWithTimeout