Мок-метод с несколькими лямбда-параметрами - PullRequest
0 голосов
/ 17 июня 2020

Допустим, у меня такая ситуация:

interface Repository {
fun getMovies(success: (List<String>) -> Unit, failure: (Int) -> Unit)
}

, и я хочу имитировать реализацию этого интерфейса. В основном в этом случае есть две лямбды в качестве входных параметров для метода getmov ie, и для тестового примера я хочу только добиться успеха (должен быть вызван success.invoke (theMoviesList)).

Ниже приведено что-то похожее на то, что я хотел бы сделать:

class MovieViewModel constructor(val repository: AppRepository) {
    var movieNames = listOf<String>() // Not private, or live data, for simplicity

    fun fetchMovies() {
        repository.fetchMovies(
        success = {
movies ->
this.movieNames = movies
        }}, failure: {
statusCode ->

        })
    }
}

class MoviePageTests {
    private var movieViewModel: MovieViewModel? = null

    @Mock
    lateinit var mockRepository: AppRepository

       @Before
    @Throws(Exception::class)
    fun before() {
        MockitoAnnotations.initMocks(this)
        movieViewModel = MovieViewModel(repository = mockRepository)
    }

        @Test
    fun checkFetchMoviesUpdatesMoviesData() {
var testMovies = listof("Dracula", "Superman")

//Set up mockito so that the repository generates success with testMovies above
?????
//

movieViewModel.fetchMovies()

assertEquals(movieViewModel.movies, testMovies)

    }

    }

Я знаю, как это сделать с помощью RepositoryImpl, но не в Mockito, несмотря на то, что просматривал множество примеров в Интернете.

Есть идеи?

...