我目前在加特林(Gatling)使用馈线,因此对于每个订单都会创建一个随机的32位数字。
val feeder = Iterator.continually(Map("orderNumber" -> (Random.alphanumeric.filter(_.isDigit).take(32).mkString)))
但是,即使Luhn校验确实创建了一个随机的32位数字,但由于Luhn校验失败而仍然失败,但是对于Luhn校验通过而言无效。
关于如何创建可为加特林测试生成有效数字的函数的任何想法。
谢谢
研究了维基百科的描述后,我将其拼凑在一起。
import scala.util.Random
def mkLuhn(len :Int) :String = {
assert(len >= 0)
LazyList.unfold((len,0)){ //<--Scala 2.13.x
case (0,_) => None
case (1,sum) => Some((sum%10, (0,0)))
case (idx,sum) =>
val digit = Random.nextInt(10)
if (idx%2 > 0) Some((digit, (idx-1, sum+digit)))
else if (digit < 5) Some((digit, (idx-1, sum+digit*2)))
else Some((digit, (idx-1, sum+(digit*2-9))))
}.mkString
}
查看它是否对您有用。