Scala 如何为Play Framework JSON阅读器编写单元测试
我希望为Scala 如何为Play Framework JSON阅读器编写单元测试,scala,playframework,Scala,Playframework,我希望为shipmentNumberValidator方法编写单元测试,其中Reads是play.api.libs.json.Reads。我该怎么做 object Validator { def shipmentNumberValidator(): Reads[String] = Reads.filter(ValidationError(ErrorConstants.BAD_SHIPMENT_NUMBER))(_.matches(BarcodePatterns.Shipm
shipmentNumberValidator
方法编写单元测试,其中Reads
是play.api.libs.json.Reads
。我该怎么做
object Validator {
def shipmentNumberValidator(): Reads[String] =
Reads.filter(ValidationError(ErrorConstants.BAD_SHIPMENT_NUMBER))(_.matches(BarcodePatterns.ShipmentNumber))
}
单元测试应该向它传递一个装运编号,并且该方法要么成功返回装运编号,要么返回错误消息(如果装运编号格式不匹配)。我不知道如何将值传递给这个方法
该方法通常用于伴随对象的隐式读取,例如:
object ShipmentOrder {
implicit val shipmentOrderReads: Reads[ShipmentOrder] = (
(JsPath \ "id").read[String](Validator.missingFieldValidator("id") keepAnd Validator.shipmentNumberValidator())(ShipmentOrder.apply _)
}
根据您使用的标准(例如规格2),您可以按以下方式测试期望值:
- 执行
Json.parse(“{expectedJson}”)必须是JsResult(expectedstance)
- 执行
Json.parse(“{unexpectedJson}”)必须是JsError(33;)
import play.api.libs.json._
"JSON" should {
"be successfully parsed when expected" in {
Json.parse("""{"expected":"json"}""") must beLike[JsResult[ShipmentOrder]] {
case JsSuccess(parsed, _) =>
parsed must_== expectedShipmentOrder
}
}
"fail to be parsed if expected" in {
Json.parse("""{"unexpected":"json"}""") must beLike[JsResult[ShipmentOrder]] {
case JsError(details) =>
ok // possible check `details`
}
}
}
嗯,有没有办法不用shipmentNumberValidator测试
shipmentNumberValidator
?原因是验证器不仅仅由ShipmentOrder使用,还有几个不同的类使用的验证器。