chetsachdeva
06/24/2018, 2:29 PM(T) -> Unit
louiscad
06/24/2018, 2:36 PM{ t -> }
poohbar
06/24/2018, 3:08 PMchetsachdeva
06/24/2018, 3:09 PMwhen
then
for mocking lambdas. I see doAnswer
on the web but need more information.chetsachdeva
06/24/2018, 3:10 PMPresenter
. The function in my Presenter
looks like this:
override fun search(query: String) {
interactor.search(query) { model ->
view.render(searchState(model))
}
}
interface Interactor {
fun search(query: String, publish: (SearchModel) -> Unit)
}
gildor
06/25/2018, 1:02 AMchetsachdeva
06/25/2018, 2:42 AMgildor
06/25/2018, 2:45 AMval myMockLambda = { model ->
return when(model) {
model.something() -> someResult
model.anythingElse() -> anotherResult
}
}
gildor
06/25/2018, 2:47 AMchetsachdeva
06/25/2018, 2:48 AMgildor
06/25/2018, 2:48 AMchetsachdeva
06/25/2018, 2:48 AMgildor
06/25/2018, 2:48 AMchetsachdeva
06/25/2018, 2:48 AMgildor
06/25/2018, 2:50 AMchetsachdeva
06/25/2018, 2:52 AMchetsachdeva
06/25/2018, 2:58 AMval publish = mock<(SearchModel) -> Unit>()
whenever(interactor.search("", publish)).thenReturn(publish.invoke(SearchModel.Init))
Getting UnfinishedStubbingException
heregildor
06/25/2018, 3:06 AMgildor
06/25/2018, 3:06 AMgildor
06/25/2018, 3:06 AMgildor
06/25/2018, 3:07 AMval interactor = mock<MyInteractor>()
whenever(interactor.search("", any())).thenReturn(SearchModel.Init)
chetsachdeva
06/25/2018, 3:07 AM@Test
fun search() {
val publish = mock<(SearchModel) -> Unit>()
whenever(interactor.search("", publish)).doAnswer { publish(SearchModel.Init) }
presenter.search("")
verify(view).render(SearchState.Init)
}
gildor
06/25/2018, 3:07 AMwhenever
gildor
06/25/2018, 3:08 AMpublish
at all in this casegildor
06/25/2018, 3:08 AMchetsachdeva
06/25/2018, 3:09 AMgildor
06/25/2018, 3:10 AMgildor
06/25/2018, 3:11 AMgildor
06/25/2018, 3:12 AMchetsachdeva
06/25/2018, 3:12 AMoverride fun search(query: String) {
interactor.search(query) { model ->
view.render(model.state())
}
}
chetsachdeva
06/25/2018, 3:12 AMchetsachdeva
06/25/2018, 3:13 AM(SearchModel) -> Unit
gildor
06/25/2018, 3:13 AMclass SimpleInteractor : Interactor {
override fun search(query: String, lambda: (SearchModel) -> Unit) {
lambda(SearchModel.Init)
}
}
gildor
06/25/2018, 3:14 AMchetsachdeva
06/25/2018, 3:14 AMgildor
06/25/2018, 3:14 AMgildor
06/25/2018, 3:14 AMgildor
06/25/2018, 3:15 AMchetsachdeva
06/25/2018, 3:15 AMinteractor.search(query: String, (SearchModel) -> Unit)
gildor
06/25/2018, 3:16 AMchetsachdeva
06/25/2018, 3:16 AMgildor
06/25/2018, 3:17 AMgildor
06/25/2018, 3:17 AMgildor
06/25/2018, 3:17 AMchetsachdeva
06/25/2018, 3:18 AMgildor
06/25/2018, 3:19 AMchetsachdeva
06/25/2018, 3:21 AM