我在 Scala 2.10.2 和 Akka 2.2 上并且有以下测试
import org.junit._
import Assert._
import scala.util.{Failure, Success}
import net.liftweb.json._
import akka.actor.ActorSystem
import akka.event.Logging
class AppTest {
implicit val system = ActorSystem("annotator-common")
import system.dispatcher // execution context for futures below
val log = Logging(system, getClass)
@Test
def testHttp() = {
import scala.concurrent.ExecutionContext
val respBody = AsyncHttpProvider.getResponseBodyAsJValue("http://some-json-api-url")
respBody onComplete {
case Success(contents) => {
val x = contents \\ "self"
log.info(x.toString)
}
case Failure(error) => log.error(error.toString)
}
Thread.sleep(2000) //adding this allows the future to complete before the test
}
}
AsynHttProvider.getResponseBodyAsJValue
返回Future[JValue]
。无论 http 调用是失败还是成功,我都没有得到任何控制台输出。有谁知道为什么?
编辑
实际上我没有提到的是,如果我添加对非基于未来的 http API 的调用,它将打印出两个调用的日志输出,所以我不认为这是日志设置。就此而言,我在println
.
我可以通过添加这个来解决这个问题,请参阅上面的更新代码
Thread.sleep(2000)