Osman Saral
03/29/2023, 8:05 AMAssertionFailedError
?
@Test
fun test() = testApplication {
install(io.ktor.server.websocket.WebSockets) {
contentConverter = KotlinxWebsocketSerializationConverter(
Json {
ignoreUnknownKeys = true
}
)
}
routing {
webSocket("/") {
sendSerialized(Incoming.Ping("123"))
val outgoing = receiveDeserialized<Outgoing.Pong>()
val a = "3"
assertEquals("2", a) //this throws AssertionFailedError but test passes
}
}
val client = createClient {
install(WebSockets) {
contentConverter = KotlinxWebsocketSerializationConverter(
Json {
ignoreUnknownKeys = true
}
)
}
}
client
.wss("/") {
val received = receiveDeserialized<Incoming.Ping>()
assertIs<Incoming.Ping>(received)
sendSerialized(Outgoing.Pong(received.id))
val a = "3"
assertEquals("3", a) //if this fails, test doesn't pass as expected.
}
}
Aleksei Tirman [JB]
03/29/2023, 10:27 AMIncoming
and Outgoing
classes?Osman Saral
03/29/2023, 10:28 AM@Serializable
sealed class Outgoing(val msg: String) {
@Serializable data class Pong(val id: String): Outgoing("pong")
}
@Serializable
sealed class Incoming(val msg: String) {
@Serializable data class Ping(val id: String): Incoming("ping")
}
Aleksei Tirman [JB]
03/29/2023, 3:03 PMOsman Saral
03/29/2023, 7:10 PMOsman Saral
03/29/2023, 7:23 PMOsman Saral
03/29/2023, 7:31 PMtestJsonWithNullWebsocketsServer
. it also tests the received message on server. when I change the assertion to assertNotNull on that test, it still passes (AssertionFailedError is still printed to the logs)
@Test
fun testJsonWithNullWebsocketsServer(): Unit = testApplication {
install(io.ktor.server.websocket.WebSockets) {
contentConverter = KotlinxWebsocketSerializationConverter(
Json {
ignoreUnknownKeys = true
}
)
}
routing {
webSocket("/") {
val user: User? = null
sendSerialized(user)
val received = receiveDeserialized<User?>()
assertNotNull(received)
}
}
createClient {
install(WebSockets)
}.ws("/") {
for (frame in incoming) {
assertEquals("null", (frame as Frame.Text).readText())
outgoing.send(frame)
}
}
}