2017-11-01 10 views
1

スキーマアサーションに変数を追加してレスポンスを一致させたいと思います。私は「#(値)」を与えることによって、それを試してみましたが、それは空手のDSLのスキーマアサーションに動的キーを与える方法

* def value = 3 

    Then match object == 
    { 
     result : { 
         '#(value)' 
           { 
            firstName : '#string', 
            lastName : '#string' 
           } 
        } 
    } 

私は取得しています例外が言う「パス$ .result(#値)実際:ヌル期待{ のfirstName:」動作しませんでした#を文字列 ' 姓:' #string ' }'

答えて

2

あなたのJSONにはひどい問題があります。あなたは本当に動的キーを使用しようとしていますか?それは可能ではありません。ここで

はあなたが間違って何をしているかを見つけ出す助けて作業例です:

* def actual = { result: { value: 3, foo: { firstName: 'John', lastName: 'Smith' } } } 
* def value = 3 
Then match actual == 
""" 
{ 
    result : { 
    value: '#(value)', 
    foo: { 
     firstName : '#string', 
     lastName : '#string' 
    } 
    } 
} 
""" 

(編集:)尋ねるダイナミックキーのために実際にいたように見えますが、ここで変更した例です。

* def actual = { result: { 3: { firstName: 'John', lastName: 'Smith' } } } 
* def fun = 
""" 
function(key) { 
    var temp = { result: {} }; 
    temp.result[key] = { firstName: '#string', lastName: '#string' }; 
    return temp; 
} 
""" 
Then match actual == fun(3) 
+0

私の要求に動的キーを使用する必要があります。それをする方法はありませんか? –

+0

多くの方法があります。私はちょうど私の答えを更新しました、この例はJSを使用します。文字列置換を参照して文字列を作成し、それをJSONにタイプ変換することもできます。 –

+1

ありがとうございました。これは本当に私を助けた –

関連する問題