Lukasz Kalnik
01/11/2022, 1:10 PMclass NetworkEitherCallAdapterTest : StringSpec({
private lateinit var server: MockWebServer
private lateinit var service: CallErrorTestClient
beforeAny {
server = MockWebServer()
server.start()
service = Retrofit.Builder()
.baseUrl(server.url("/"))
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(EitherCallAdapterFactory.create())
.build()
.create(CallErrorTestClient::class.java)
}
afterAny { server.shutdown() }
"should return ResponseMock for 200 with valid JSON" {
server.enqueue(MockResponse().setBody("""{"response":"Arrow rocks"}"""))
val body = service.getEither()
body shouldBe ResponseMock("Arrow rocks").right()
}
// More tests...
I want to run the test class 3 times with different service
instances (which will use different ConverterFactory
each). What is the most readable way to achieve it? I don't want to parameterize every test, I want to parameterize the whole class and repeat it.sam
01/11/2022, 1:22 PMLukasz Kalnik
01/11/2022, 1:32 PMsam
01/11/2022, 1:32 PMLukasz Kalnik
01/11/2022, 1:45 PMserver
and service
are regenerated for each test inside the factory using beforeAny
?jsonConverterFactory
(which in my example actually should replace the hardcoded GsonConverterFactory.create()
call). But then the server
and service
need to be recreated for every test inside the factory.?.
everytime.sam
01/11/2022, 1:57 PMLukasz Kalnik
01/11/2022, 2:00 PMlateinit
as before.sam
01/11/2022, 2:00 PMLukasz Kalnik
01/11/2022, 2:00 PM!!
and I don't mind it.sam
01/11/2022, 2:01 PMLukasz Kalnik
01/11/2022, 2:01 PMsam
01/11/2022, 2:01 PMLukasz Kalnik
01/11/2022, 2:02 PMsam
01/11/2022, 2:02 PMLukasz Kalnik
01/11/2022, 2:03 PMsam
01/11/2022, 2:03 PMLukasz Kalnik
01/11/2022, 2:04 PM"should return IOError when no response" {
server!!.enqueue(MockResponse().apply { socketPolicy = SocketPolicy.NO_RESPONSE })
val body = service!!.getEither()
body.shouldBeInstanceOf<Left<IOError>>()
.value.cause.shouldBeInstanceOf<SocketTimeoutException>()
}
sam
01/11/2022, 2:05 PM"mytest" {
withServer { server- ->
}
}
Lukasz Kalnik
01/11/2022, 2:27 PM!!
operator.sam
01/11/2022, 2:28 PM