2017-11-20 18 views
1

空手フレームワークを使用して複数の入力を与えて応答を検証しようとしています。以下はサンプルフィーチャーファイルです。空手で複数の入力を使ってレスポンスを検証する方法

Scenario Outline: response validation 
    Given url 'urls?xyz=[<value>]' 
    When method get 
    Then status <status> 
    And match response == [{abc:'<response>'},{pqr:'<response1>'}] 

Examples: 
     | value | status | response | response1   | 
     |  3 | 200 |  3 | null    | 
     | *  | 400 |   | Invalid xyz  | 
     |  65 | 200 |   |     | 
     | &^%^&% | 400 |   | Invalid xyz  | 

でもない時に、両方の条件を検証することができ、パラメータの一つは、常に「ABC」または「PQR」のいずれかnullになります。以下は私が得ている例外です。 dynamic-params.featureを:

12:28:11.204 [pool-1-thread-1] DEBUG com.intuit.karate - response time in milliseconds: 742 
12:28:11.276 [pool-1-thread-1] ERROR c.i.k.cucumber.KarateJunitFormatter - failed feature: path.my 
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List 
    at com.intuit.karate.Script.matchNestedObject(Script.java:969) 
    at com.intuit.karate.Script.matchJsonPath(Script.java:871) 
    at com.intuit.karate.Script.matchNamed(Script.java:597) 
    at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:463) 
    at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:453) 
    at ✽.And match response == [{abc:'3'},{pqr:''}](path/my.feature:27) 

答えて

0

は、実際に私はそれはあなたにたくさんのアイデアを与え、これを解決するためにさまざまなアプローチがあります、あなたは一度この例を行くお勧めします。たとえば、クエリのパラメータをURLに連結する代わりに、paramsというキーワードを使用することができます。

And match response == <expected> 

Examples: 
    | value | status | expected      | 
    |  3 | 200 | [{abc:3},{pqr:null}]   | 
    | *  | 400 | [{pqr:'Invalid xyz'}]   | 
:私の経験で

は、Examples:テーブルにこのような何かをJSONスニペットを配置する方が簡単です

関連する問題