2016-12-15 6 views
0

저는 Savon을 사용하여 일부 WSDL SOAP 서비스를 테스트하고 일부 서비스는 메시지에서 중복 된 키/값을 필요로합니다. 예를 들어 "제품"배열 내부의 "제품"값의 경우 :메시지에서 "무시 된 중복 키"수정 방법

@client.call(
    :create_template, message: { 
    :item => [{ 
     'promotion_id'  => "1", 
     'code_is_unique' => "0", 
     'name'   => "qasusc1", 
     'description'  => "Automation suscription", 
     'basecode'  => "qasusc1", 
     'total_redemptions' => "30", 
     'valid_from'  => "2016-12-12 00:00:00", 
     'valid_to'  => "2017-12-12 00:00:00", 
     'duration_quantity' => "1", 
     'duration_unit'  => "M", 
     'operator_code'  => "NAME", 
     'initial_quantity' => "30", 
     :products => [{ 
     :product => [{ 
      'id'   => "3", 
      'off_percentage' => "100", 
      'quantity'  => "1" 
     }], 
     :product => [{ 
      'id'   => "4", 
      'off_percentage' => "100", 
      'quantity'  => "1" 
     }] 
     }], 
     :lists => [{ 
     'list'   => "1" 
     }], 
     :promotion_rules => [{ 
     :promotion_rule => [{ 
      'code' => "HAS_PAYMENT_GATEWAY_RULE", 
      'value' => "1" 
     }] 
     }] 
    }] 
    } 
) 

그러나 나는 다음과 같은 오류를 받고 있어요는 :

tests/suites_soap/test_soap.rb:840: warning: duplicated key at line 22 ignored: :product 
+0

에 오신 것을 환영합니다 :

this issue에 따르면, 당신은 루비 형태로 중복 키를 나타내는 배열을 사용해야합니다. "[mcve]"를 읽으십시오. 문제를 나타내는 최소 코드와 입력 데이터를 확인해야합니다. 실행될 코드를 추가하고 가능한 최소 입력으로 입력을 줄이면 메시지가 계속 표시됩니다. 이렇게하면 테스트 하네스를 작성하거나 데이터를 줄일 필요가 없어 응답이 느려지므로 도움이됩니다. –

답변

2

당신은 기간을 해시 내부의 키를 복제 할 수 없습니다.

{ a: 1, a: 2 }항상{a: 2}과 같아야합니다. 스택 오버플로

:products => [{ 
    :product => [ 
    { 
     'id'     => "3", 
     'off_percentage'  => "100", 
     'quantity'    => "1" 
    }, 
    { 
     'id'     => "4", 
     'off_percentage'  => "100", 
     'quantity'    => "1" 
    } 
    ] 
+0

대단히 감사합니다! 그것은 완벽하게 작동했고 나는 그것으로 실제 문제를 이해했습니다! –