クライアントから受信した JSON にすべての必須フィールドが含まれていることを確認するテストを Grails で作成しています。マップは次のようになります。
def map = [
customer: [
firstName: 'John',
lastName: 'Doe',
id: '123',
],
orderNumber: '123456',
paymentInfo: [
type: 'paypal',
amount: '1200',
currency: 'USD'
]
]
言い換えれば、customer
とpaymentInfo
キーはサブキーを持つマップそのものです。
私のテストでは、各キーとサブキーを削除して、入力の検証が機能していることを確認したいと思います。私はこのようなことをしました:
// test 1
map.remove('orderNumber')
def result = service.performAction(map)
assert result == ServiceCall.ValidationError
// test 2
map.remove('customer.firstName')
def result = service.performAction(map)
assert result == ServiceCall.ValidationError
テスト 1 は機能し、キーを適切に削除しますが、テスト 2 はサブキーorderNumber
を削除しません。firstName
使用できることはわかっておりmap.customer.remove(firstName)
、サブキーを適切に削除しますが、文字列の配列を渡すだけでキーとサブキーが適切に削除されるように、テストを十分に汎用的にしようとしています。
def array = ['orderNumber', 'customer.firstName', 'customer.lastName', etc...]
array.each {
map.remove(it)
def result = service.performAction(map)
assert result == ServiceCall.ValidationError
}
この方法でサブキーを削除することはできますか?もしそうなら、どうすればよいですか?