kotlin多平台库简单http get请求测试
kotlin multiplatform library simple http get request test
我是 kotlin 多平台库的新手。
我想发出一个简单的 HTTP get 请求并测试它是否有效。
这是我到目前为止所拥有的。
这是在 commonMain 包中
import io.ktor.client.*
import io.ktor.client.request.*
object HttpCall {
private val client: HttpClient = HttpClient()
suspend fun request(url: String): String = client.get(url)
}
这是我的测试
@Test
fun should_make_http_call() {
GlobalScope.launch {
val response = HttpCall.request("https://whosebug.com/")
println("Response: ->$response")
assertTrue { response.contains("Stack Overflow - Where Developers Learn") }
assertTrue { response.contains("text that does not exist on Whosebug") }
}
现在,由于第二个断言,这应该会失败,但事实并非如此。
无论我做什么,测试总是通过。
并且打印响应也不起作用
我在这里做错了什么?
测试函数将在单线程中运行,如果函数结束没有失败,则测试通过。 GlobalScope.launch
在不同的线程中启动操作。主测试线程将在网络调用有机会 运行.
之前完成
你 应该 用 runBlocking
之类的东西来调用它,但是在 Kotlin native 上测试一般的协程,特别是 ktor,并不容易,因为没有简单的让挂起的函数在当前线程上继续的方法。
我是 kotlin 多平台库的新手。 我想发出一个简单的 HTTP get 请求并测试它是否有效。 这是我到目前为止所拥有的。 这是在 commonMain 包中
import io.ktor.client.*
import io.ktor.client.request.*
object HttpCall {
private val client: HttpClient = HttpClient()
suspend fun request(url: String): String = client.get(url)
}
这是我的测试
@Test
fun should_make_http_call() {
GlobalScope.launch {
val response = HttpCall.request("https://whosebug.com/")
println("Response: ->$response")
assertTrue { response.contains("Stack Overflow - Where Developers Learn") }
assertTrue { response.contains("text that does not exist on Whosebug") }
}
现在,由于第二个断言,这应该会失败,但事实并非如此。 无论我做什么,测试总是通过。 并且打印响应也不起作用 我在这里做错了什么?
测试函数将在单线程中运行,如果函数结束没有失败,则测试通过。 GlobalScope.launch
在不同的线程中启动操作。主测试线程将在网络调用有机会 运行.
你 应该 用 runBlocking
之类的东西来调用它,但是在 Kotlin native 上测试一般的协程,特别是 ktor,并不容易,因为没有简单的让挂起的函数在当前线程上继续的方法。