Модульное тестирование Android с Mockito для внешних вызовов REST API - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в тестовых примерах JUnit в Android.Я слышал, что с помощью Mockito мы можем легко достичь.

Мой класс Android выполняет внешний вызов службы API REST (Retrofit), которая возвращает ответ JSON.Я должен высмеять этот ответ (в жестком коде JSON) и написать контрольные примеры.

Пожалуйста, поделитесь своей идеей, как этого добиться.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете проверить примеры Google: https://github.com/googlesamples/android-architecture-components/blob/master/GithubBrowserSample/app/src/test/java/com/android/example/github/api/GithubServiceTest.kt

Вы можете использовать варианты продукта для макета своего ответа или пользовательской библиотеки MockWebServer или заменить свой модифицированный интерфейс своей реализацией, что возвращает json из активов

upd: я неправильно понял вопрос.Я согласен с Phowner Biring

0 голосов
/ 08 октября 2018
class Test{
        @Mock
        lateinit var redditApiService: RedditApiService
        lateinit var postSettingsViewModel: PostSettingsViewModel

        @Before
        fun setUp() {
            initMocks(this)
            postSettingsViewModel = PostSettingsViewModel(redditApiService, userRepo)
        }


        @Test
        fun testApi(){
            Mockito.`when`(redditApiService.getSubreddits("asd")).thenReturn(Single
                .just<SubredditResponse>(SubredditResponse(listOf(Subreddit("first")))))
           //make your tests

        }

    }

Вы можете использовать viewmodel или Presenter и передать туда свой API-сервис.С помощью mockito вы можете указать вызов функции и ее возвращаемое значение.Mockito.when(api.get()).thenReturn(new Result()).

...