Имитация вызовов модифицированного API с использованием MockWebServerAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Имитация вызовов модифицированного API с использованием MockWebServer

Сообщение Гость »


Я пытаюсь написать тестовые примеры для сетевого уровня для моего приложения Android для модернизации вызова API. Я используюockWebServer для имитации
вызовов API. Однако я не могу получить правильный ложный ответ, вместо этого он выдает исключение тайм-аута сокета.
Ниже приведен мой код:

Код: Выделить всё

@RunWith(MockitoJUnitRunner::class)
class SampleApiClientTest {

@get: Rule
val rule = InstantTaskExecutorRule()

private lateinit var mockWebServer: MockWebServer
private lateinit var sampleApiClient: SampleApiClient
private lateinit var retrofit: Retrofit
@Mock
lateinit var helper: SharedPreferencesHelper
@Mock
private lateinit var authHeader: IAuthHeader

@Before
fun setUp(){
mockWebServer = MockWebServer()
retrofit = Retrofit.Builder()
.baseUrl(mockWebServer.url("/"))
.addConverterFactory(GsonConverterFactory.create())
.build()
Mockito.`when`(helper.getBaseUrl()).thenReturn(mockWebServer.url("/").toString())
APIClientProvider.buildNetworkProvider(true, helper)
sampleApiClient = SampleApiClient()
}

@After
fun tearDown() {
mockWebServer.shutdown()
}

@Test
fun testSample(){
runBlocking {
val request = SanpleRequest("","")
sampleApiClient.apiClient = retrofit.create(SampleApi::class.java)

mockWebServer.enqueue(MockResponse().setBody("[]"))

val result = sampleApiClient.sample(authHeader,request)
mockWebServer.takeRequest()
Assert.assertEquals(200,result.body())
}
}
}

class SampleApiClient : SampleApi {

lateinit var apiClient : SampleApi
override suspend fun sample(
authHeader: IAuthHeader,
request: SanpleRequest
): Response {
apiClient = APIClientProvider.createService(SampleApi::class.java)
return apiClient.sample(authHeader,request)
}
}

interface SampleApi {

@POST("V003/Sample?format=json")
suspend fun sample(
@Tag authHeader : IAuthHeader,
@Body request: SampleRequest
): Response
}
How do I achieve this?


Источник: https://stackoverflow.com/questions/781 ... kwebserver
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»