Scala 如何定义任意性?
我正在使用ScalaTest和ScalaCheck。我编写了自定义生成器和任意生成器,如下所示:Scala 如何定义任意性?,scala,scalatest,scalacheck,Scala,Scalatest,Scalacheck,我正在使用ScalaTest和ScalaCheck。我编写了自定义生成器和任意生成器,如下所示: import java.time.LocalDateTime import org.scalacheck._ import org.scalatest.PropSpec import org.scalatest.prop.Checkers import Gen._ import Arbitrary.arbitrary class AuthJwtSpec extends PropSpec wit
import java.time.LocalDateTime
import org.scalacheck._
import org.scalatest.PropSpec
import org.scalatest.prop.Checkers
import Gen._
import Arbitrary.arbitrary
class AuthJwtSpec extends PropSpec with Checkers {
private val start = LocalDateTime.now.atZone(java.time.ZoneId.systemDefault()).toEpochSecond
private val end = LocalDateTime.now.plusDays(2).atZone(java.time.ZoneId.systemDefault()).toEpochSecond
private val pickTime = Gen.choose(start, end)
private val authUser: Arbitrary[AuthUser] =
Arbitrary {
for {
u <- arbitrary[String]
p <- arbitrary[String]
} yield AuthUser(u, p)
}
property("Generate JWT token.") {
check(Prop.forAll(authUser, pickTime) {(r1: AuthUser, r2: Long) =>
???
})
}
}
import java.time.LocalDateTime
导入org.scalacheck_
导入org.scalatest.PropSpec
导入org.scalatest.prop.Checkers
进口发电机_
导入任意
类AuthJwtSpec使用检查器扩展了PropSpec{
private val start=LocalDateTime.now.atZone(java.time.ZoneId.systemDefault()).toepochssecond
private val end=LocalDateTime.now.plusDays(2).atZone(java.time.ZoneId.systemDefault()).toepochssecond
private val pickTime=Gen.choose(开始、结束)
私有val authUser:任意[authUser]=
武断的{
为了{
u如我所见,问题在于authUser
字段-它应该是Gen[authUser]
,而不是任意[authUser]
:
import java.time.LocalDateTime
import org.scalacheck._
import org.scalatest._
import prop._
case class AuthUser(u: String, p: String)
class AuthJwtSpec extends PropSpec with Checkers with PropertyChecks {
private val start = LocalDateTime.now.atZone(java.time.ZoneId.systemDefault()).toEpochSecond
private val end = LocalDateTime.now.plusDays(2).atZone(java.time.ZoneId.systemDefault()).toEpochSecond
private val pickTime: Gen[Long] = Gen.choose(start, end)
// AuthUser should be Gen[AuthUser], not Arbitary[AuthUser]
private val authUser: Gen[AuthUser] =
for {
u <- Arbitrary.arbitrary[String]
p <- Arbitrary.arbitrary[String]
} yield AuthUser(u, p)
property("Generate JWT token.") {
val prop = Prop.forAll(authUser, pickTime) {(user: AuthUser, time: Long) =>
println(s"User: $user")
println(s"Time: $time")
// Property checks must always return true or false
true
}
check(prop)
}
}
import java.time.LocalDateTime
导入org.scalacheck_
导入org.scalatest_
进口道具_
案例类AuthUser(u:String,p:String)
类AuthJwtSpec使用带有属性检查的检查器扩展了PropSpec{
private val start=LocalDateTime.now.atZone(java.time.ZoneId.systemDefault()).toepochssecond
private val end=LocalDateTime.now.plusDays(2).atZone(java.time.ZoneId.systemDefault()).toepochssecond
private val pickTime:Gen[Long]=Gen.choose(开始、结束)
//AuthUser应该是Gen[AuthUser],而不是任意[AuthUser]
私有val authUser:Gen[authUser]=
为了{
U