commit | c8d9f689563eae6331ba21fa80d54f14eff159c0 | [log] [tgz] |
---|---|---|
author | Niek Haarman <haarman.niek@gmail.com> | Sun Mar 27 16:00:41 2016 +0200 |
committer | Niek Haarman <haarman.niek@gmail.com> | Sun Mar 27 16:00:41 2016 +0200 |
tree | 8f144427951316e8a4c7aa7b4c07ad2c0d3193c4 | |
parent | 129f9e679bc150308fd3935857fe161cebe1578c [diff] |
Unset the MockitoInterceptor for unchecked mocks. This allows the default functions to be called on these mocks during verification. Apparently, the MockitoInterceptor added by Mockito does some internal state checking. This is not necessary here.
A small library that provides helper functions to work with Mockito in Kotlin.
Mockito-Kotlin is available on JCenter. For Gradle users, add the following to your build.gradle
:
repositories { jcenter() } dependencies { testCompile "com.nhaarman:mockito-kotlin:x.x.x" }
Due to Kotlin‘s reified type parameters, if the type can be inferred, you don’t have to specify it explicitly:
Java:
MyClass c = mock(Myclass.class); c.doSomething(mock(MyOtherClass.class));
Kotlin:
val c : MyClass = mock() c.doSomething(mock())
If the type can't be inferred, you can pass it like so:
val d = mock<MyClass>()
Mockito‘s any(Class<T>)
often returns null
for non-primitive classes. In Kotlin, this can be a problem due to its null-safety feature. This library creates non-null instances when necessary. Again, if the type can be inferred, you don’t have to specify it explicitely:
Java:
verify(myClass).doSomething(any(String.class));
Kotlin:
verify(myClass).doSomething(any()); // Non-nullable parameter type is inferred
For generic arrays, use the anyArray()
method:
verify(myClass).setItems(anyArray())
Using higher-order functions, you can write very clear expectations about expected values. For example:
Kotlin:
verify(myClass).setItems(argThat{ size == 2 })
Most of Mockito‘s static functions are available as top-level functions. That means, IDE’s like IntelliJ can easily import and autocomplete them, saving you the hassle of manually importing them.