Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing kotlin多平台库简单http get请求测试_Unit Testing_Kotlin_Kotlin Coroutines_Kotlin Multiplatform - Fatal编程技术网

Unit testing kotlin多平台库简单http get请求测试

Unit testing kotlin多平台库简单http get请求测试,unit-testing,kotlin,kotlin-coroutines,kotlin-multiplatform,Unit Testing,Kotlin,Kotlin Coroutines,Kotlin Multiplatform,我是kotlin多平台图书馆的新手。 我想做一个简单的HTTPGET请求,并测试它是否有效。 这是我到目前为止所拥有的。 这在commonMain包中 import io.ktor.client.* import io.ktor.client.request.* object HttpCall { private val client: HttpClient = HttpClient() suspend fun request(url: String): String = cl

我是kotlin多平台图书馆的新手。 我想做一个简单的HTTPGET请求,并测试它是否有效。 这是我到目前为止所拥有的。 这在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://stackoverflow.com/")
            println("Response: ->$response")
            assertTrue { response.contains("Stack Overflow - Where Developers Learn") }
            assertTrue { response.contains("text that does not exist on stackoverflow") }
        }
现在,由于第二个断言,这应该会失败,但事实并非如此。 不管我做什么,考试总是通过。 而且打印响应也不起作用
我做错了什么?

测试函数将在单个线程中运行,如果函数结束时没有失败,测试将通过
GlobalScope.launch
在不同线程中启动操作。主测试线程将在网络调用有机会运行之前完成


您应该使用类似于
runBlocking
的方法来调用此函数,但是在Kotlin native上测试协同路由,特别是ktor,并不容易,因为没有简单的方法可以让挂起的函数在当前线程上继续。

谢谢。我现在就知道了