什么是产生一个非空字符串的最佳方式,在这样的背景下,当
private def createIndexFn() = {
for{
someChar <- Gen.alphaString
aNumber <- Gen.choose(1,100)
//...
}
yield {
MyThing(AnotherType(someChar.toString), SomeOtherType(aNumber), aNumber)
}
}
你需要也许someChar是一个非空字符串。我知道你可以在whenever
部分使用forAll
但我不知道怎么做,在发电机的这一部分。
谢谢
我一直在寻找的是:
import org.scalacheck.Arbitrary.arbitrary
arbitrary[String].suchThat(!_.isEmpty)
并且可以使用像
for {
name <- arbitrary[String].suchThat(!_.isEmpty)
age <- Gen.choose(0, 100)}
yield Person(name, age)
希望这可以帮助别人
接受的答案引起了我丢弃测试的高比例,我最终使用:
import org.scalacheck._
Arbitrary(Gen.nonEmptyListOf[Char](Arbitrary.arbChar.arbitrary)).map(_.mkString))