0

我对服务测试和 Groovy 很陌生。以下是我的回复,

{
    encodedDiscountId=1275479, 
    encodedGuid=gOHSkGzQEee4-AJiXJP2jg,
    expirationDate=2017-08-17 17:00:00
}

我需要以下断言的帮助:

  1. 我需要断言 DiscountId 值是否都是 7 位长的随机数字。
  2. 我需要用“-”断言我得到一个大写和小写的字母数字
  3. 我需要断言 expireDate 应该是系统日期后的 30 天。

我尝试了脚本断言并不断收到此错误。

import groovy.json.JsonSlurper

def response = messageExchange.response.responseContent
def slurper = new JsonSlurper()
def json = slurper.parseText(response)
assert json.encodedDiscountId.size() == 7
assert json.encodedDiscountId.matches("[0-9]")

错误:

assert json.encodedDiscountId.matches("[0-9]") | | | | 1043947 false [encodedDiscountId:1043947, encodedGuid:l0wWcG2KEee4-AJiXJP2jg, expirationDate:2017-08-18 17:00:00]
4

1 回答 1

1

您的正则表达式仅适用于 0-9 字符类中的单个字符。您需要断言整个字符串是数字,例如/^[0-9]+$.

^匹配行首和行$尾,[0-9]+表示至少有 1 个数字。而且由于它看起来encodedDiscountId总是 7 位数字,因此您可以将其包含在正则表达式中作为^[0-9]{7}$.

由于$正则表达式中有 a 如果您使用双引号,则需要将其转义为\$( "^[0-9]+\$") 或使用斜线字符串 ( /^[0-9]+$/) 或单引号 ( '^[0-9]+$')。

于 2017-07-20T21:38:52.623 回答