对Kotlin来说还很陌生。 我正在测试一个HTTP客户端,该客户端异步执行调用并以回调作为调用方的参数。
现在,让我们假设调用方是单元测试。在INSIDE上声明回调显然不起作用,因为它在某种后台io线程中运行(使用Kluent进行断言,我真的很喜欢语法)。
client.query(identifier, uiCallback = {
System.out.println("Found a total of ${it.total} entries with identifier!")
signal.countDown()
it.total shouldBe 1
})
我可以将断言推迟到回调的外部,但是我认为这不是很优雅。
在具有Java的android上下文中,我会做类似“ runOnUIThread”(在RX之前)的操作。我还必须在android中使用该api,所以无论如何我都会遇到这个问题。
我一定想念sg。很基本的。无论如何,将junit用于kotlin是最新的技术还是有更好的方法?
编辑:该“信号”中有一个CountdownLatch等待异步执行。
编辑2:改造服务定义:
@GET("Entity")
fun query(@Query("identifier") identifier: Array<String?> = arrayOfNulls(0),
@Query("_count") count:Int = 10): Call<ResponseBody>