2017-07-20 6 views
0

私はサービステストとGroovyにはかなり新しいです。Groovy JsonSlurper乱数、ランダムな英数字と日付のアサーション

  1. 私はDiscountId値が長い7桁のすべてのランダムな数値がある場合にアサートする必要があります。次
    { 
        encodedDiscountId=1275479, 
        encodedGuid=gOHSkGzQEee4-AJiXJP2jg, 
        expirationDate=2017-08-17 17:00:00 
    } 
    

    は、私は、次のアサーションのための助けを必要とし、私の応答です。
  2. 大文字と小文字のアルファベットが「 - 」で表示されます
  3. システムの日付から30日以内にexpirationDateを指定する必要があります。

私はスクリプトのアサーションを試してこのエラーが発生し続けます。

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] 
+0

コード、出力、およびエラーを画像ではなくテキストとして送信してください。 – doelleri

答えて

1

あなたの正規表現は0-9からの文字クラスにおける単一の文字です。あなたは文字列全体が数字であると主張する必要があります。/^[0-9]+$のようなものです。

^は、行の先頭に一致し、$は末尾に一致し、[0-9]+は少なくとも1つの数を意味します。 encodedDiscountIdは常に7桁であるように見えるので、その正規表現に^[0-9]{7}$と含めることができます。

あなたは\$"^[0-9]+\$")としてそれをエスケープするかslashy文字列(/^[0-9]+$/)または単一引用符('^[0-9]+$')を使用する必要があり、二重引用符を使用している場合、正規表現で$があるので。

+0

応答のために@doelleriに感謝します、 'assert json.encodedDiscountId.matches("^[0-9] {7} $ ")'このエラーが発生します '起動に失敗しました:Script27.groovy:9:ドル記号;解決策:リテラルドル記号 "\ $ 5"をエスケープするか、値式 "$ {5}" @行9、列38を括弧で囲んでください。assert json.encodedDiscountId.matches( "^ [0-9] {7} $")^org.codehaus.groovy.syntax.SyntaxException:ドル記号の後の不正な文字列の本文文字。解決策:リテラルドル記号 "\ $ 5"をエスケープするか、値式 "$ {5}" @行9、列38をかっこで囲みます。 – peter

+0

@peterスラッシュな文字列または一重引用符を使用して、 $ 'はGStringに変数を挿入するか、エラーが示すように' \ $ 'でエスケープします。 – doelleri

+0

ありがとう@doelleri、一重引用符が機能しました。私の第一主張はよかった! – peter

関連する問題