我正在使用 Play Framework 来简化 Scala 中的 JSON 解析。我的代码如下所示:
def getAuthToken(userid: String, password: String): String = {
val body: JsValue = Json.obj("userid" -> userid , "password" -> password)
val res = Json.parse(Http("https://<some url>")
.postData(body.toString()).asString.body)
res("token").toString()
}
现在,如果我提供正确的用户名和密码,我肯定会token
在我的res
对象内部得到一个。所以我在 Scala 中编写了一个测试用例,目前看起来像这样,其中我没有传递有效的用户名和密码:
class ApiCheckerTest extends FunSuite {
test("ApiChecker.getAuthToken") {
assert(ApiChecker.getAuthToken("" , "") == null)
}
}
当我尝试运行它时,我得到了这个异常:
token
java.util.NoSuchElementException: token
at play.api.libs.json.JsLookup$.apply$extension1(JsLookup.scala:68)
at ApiChecker$.getAuthToken(ApiChecker.scala:15)
at ApiCheckerTest$$anonfun$1.apply(ApiCheckerTest.scala:5)
at ApiCheckerTest$$anonfun$1.apply(ApiCheckerTest.scala:5)
at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
at org.scalatest.FunSuite.withFixture(FunSuite.scala:1560)
at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:183)
...
ApiChecker$.getAuthToken(ApiChecker.scala:15)
是getAuthToken
函数的最后一行。
如何测试我是否token
在场res
?