File tree Expand file tree Collapse file tree 2 files changed +68
-0
lines changed
main/kotlin/com/nhaarman/mockito_kotlin Expand file tree Collapse file tree 2 files changed +68
-0
lines changed Original file line number Diff line number Diff line change @@ -79,6 +79,18 @@ inline fun <reified T : Any> mock(defaultAnswer: Answer<Any>): T = Mockito.mock(
7979inline fun <reified T : Any > mock (s : MockSettings ): T = Mockito .mock(T ::class .java, s)!!
8080inline fun <reified T : Any > mock (s : String ): T = Mockito .mock(T ::class .java, s)!!
8181
82+ inline fun <reified T : Any > mock (stubbing : KStubbing <T >.() -> Unit ): T
83+ = Mockito .mock(T ::class .java)!! .apply { stubbing(KStubbing (this )) }
84+
85+ class KStubbing <out T >(private val mock : T ) {
86+ fun <R > on (methodCall : R ) = Mockito .`when `(methodCall)
87+ fun <R > on (methodCall : T .() -> R ) = Mockito .`when `(mock.methodCall())
88+ }
89+
90+ infix fun <T > OngoingStubbing<T>.doReturn (t : T ): OngoingStubbing <T > = thenReturn(t)
91+ fun <T > OngoingStubbing<T>.doReturn (t : T , vararg ts : T ): OngoingStubbing <T > = thenReturn(t, * ts)
92+ inline infix fun <reified T > OngoingStubbing<T>.doReturn (ts : List <T >): OngoingStubbing <T > = thenReturn(ts[0 ], * ts.drop(1 ).toTypedArray())
93+
8294fun mockingDetails (toInspect : Any ): MockingDetails = Mockito .mockingDetails(toInspect)!!
8395fun never (): VerificationMode = Mockito .never()!!
8496inline fun <reified T : Any > notNull (): T ? = Mockito .notNull(T ::class .java)
Original file line number Diff line number Diff line change @@ -282,4 +282,60 @@ class MockitoTest {
282282 mock.go()
283283 }
284284 }
285+
286+ @Test
287+ fun testMockStubbing_lambda () {
288+ /* Given */
289+ val mock = mock<Open >() {
290+ on { stringResult() } doReturn " A"
291+ }
292+
293+ /* When */
294+ val result = mock.stringResult()
295+
296+ /* Then */
297+ expect(result).toBe(" A" )
298+ }
299+
300+ @Test
301+ fun testMockStubbing_normalOverridesLambda () {
302+ /* Given */
303+ val mock = mock<Open >() {
304+ on { stringResult() }.doReturn(" A" )
305+ }
306+ whenever(mock.stringResult()).thenReturn(" B" )
307+
308+ /* When */
309+ val result = mock.stringResult()
310+
311+ /* Then */
312+ expect(result).toBe(" B" )
313+ }
314+
315+ @Test
316+ fun testMockStubbing_methodCall () {
317+ /* Given */
318+ val mock = mock<Open >()
319+ mock<Open > {
320+ on(mock.stringResult()).doReturn(" A" )
321+ }
322+
323+ /* When */
324+ val result = mock.stringResult()
325+
326+ /* Then */
327+ expect(result).toBe(" A" )
328+ }
329+
330+ @Test
331+ fun doReturn_withSingleItemList () {
332+ /* Given */
333+ val mock = mock<Open > {
334+ on { stringResult() } doReturn listOf (" a" , " b" )
335+ }
336+
337+ /* Then */
338+ expect(mock.stringResult()).toBe(" a" )
339+ expect(mock.stringResult()).toBe(" b" )
340+ }
285341}
You can’t perform that action at this time.
0 commit comments