リクエスト時にあるHeaderを付与するSampleInterceptor()
を書いた場合、OkHttpのMockWebServerを使って次のようにテストを書ける。
@RunWith(AndroidJUnit4::class)
class SampleInterceptorTest {
@get:Rule
val server: MockWebServer = MockWebServer()
@Before
fun init() {
server.enqueue(MockResponse())
}
@Test
fun test() {
val client: OkHttpClient = OkHttpClient().newBuilder()
.addInterceptor(SampleInterceptor())
.build()
val response = client.newCall(Request.Builder().url(server.url("/")).build()).execute()
response.request().run {
Truth.assertThat(header("HEADER_NAME")).isNotNull()
}
}
}
これだけでMockWebServerのstartとshutdownをやってくれるの便利。
@get:Rule
val server: MockWebServer = MockWebServer()
OkHttp Authenticatorのテスト
OkHttp Authenticatorでのtokenの更新処理とUnitTestについても書いた。
参考
- Interceptorの概要
- okhttp3プロジェクトに含まれるInterceptorのテスト
- https://jordifierro.com/android-http-interceptor-testing