Scala 如何定义任意性?

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

我正在使用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 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