Add doReturn().on { method() }
helper to KStubbing
#481
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This implements my proposed solution to #453, which provides a cleaner way to use the
doReturn().when(mock).methodCall()
mocking syntax. Mockito-kotlin provides a.whenever(mock)
extension, sincewhen
is a reserved keyword in Kotlin, however inside aKStubbing
you still need to specify the instance, which gets messy and verbose.I added one extension function to
KStubbing
:Stubber.on(methodCall)
.I went with
doReturn(...).on { ... }
instead ofdoReturn(...) on { ... }
because of the difference in how the results are chained:This method doesn't provide type safety, but it's a simple and effective solution. We could create an entire custom
KStubber<T>
class that does type safety, however, while that will provide type safety, it won't provide type inference, since you do the.on { myMethod() }
at the end.We could provide type safety and type inference given a different syntax, but it's awkward.
There are probably other possible syntaxes, but this is the best one I came up with.