2012-02-15 4 views
0

期待通りのステップが動作していない「『パス』には含まれるべきである:」私は

Iを(キュウリの段階のため、事前に謝罪し、彼らがより良い流れるように公平なビットをクリーンアップする必要があります)安価なAPI用のテストスイートを作成するには、キュウリとrest-client、およびjson_specの宝石の組み合わせを使用しています。アプローチは、the Cucumber Bookで与えられたものと似ています。この場合、 '顧客'は開発者であるため、通常はキュウリのシナリオで表現するよりも、ビジネスの言語ははるかに技術的です。

私はjson_specキュウリ段階での問題は、「その後でJSON 『パス』は含まれている必要があります」

は私のシナリオは、この

Scenario Outline: GET to OR Packages for specific package uuid returns proper data 
    Given I create a request body from the following JSON data 
    """ 
    { 
    "package": 
    { 
     "name": "anothertestpackage", 
     "description": "This is a test, testing 4 5 6", 
     "package_type" : <package_type>, 
     "duration": 30, 
     "start_date": "2012-03-01T08:00:00Z" 
    } 
    } 
    """ 
    And I have the URI for a new: package made in: OR from the request body 
    When I make a: GET request to the URI for: my new package with no query string 
Then the JSON at "package" should include: 
    """ 
    { 
    "name": "anothertestpackage", 
    "description": "This is a test, testing 4 5 6", 
    "package_type" : <package_type>, 
    "duration": 30, 
    "start_date": "2012-03-01T08:00:00Z" 
    } 
    """ 

    Examples: 
    | package_type | 
    | "IMPRESSIONS" | 
    | "CLICKS" | 
    | "LEADS" | 

のように見え、last_jsonの内容は、次にステップがある時点で、このようなものです実行した

{ 
    "package": { 
    "status": "NEW", 
    "account": { 
     "resource_uri": "/api/v0001/accounts/fecdbb85a3584ca59820a321c3c2767d" 
    }, 
    "name": "anothertestpackage", 
    "package_type": "IMPRESSIONS", 
    "margin_goal": "0.5000", 
    "duration": 30, 
    "resource_uri": "/api/v0001/packages/fecdbb85a3584ca59820a321c3c2767d/feea333776c9454c92edab8e73628cbd", 
    "start_date": "2012-03-01T08:00:00Z", 
    "description": "This is a test, testing 4 5 6" 
    } 
} 

私はステップが合格と思うはずですが、私はそのエラーが間違っているものに関して私に言っているものは不明である代わりに

Expected included JSON at path "package" (RSpec::Expectations::ExpectationNotMetError) 
features\OR\API\OR_API_Packages.feature:70:in `Then the JSON at "package" should include:' 

このエラーを取得しています。このユーザーはエラーですか?別の手段を使用して、APIによって返されるJSONに期待されるkey:valueのペアが存在するかどうかを判断する必要がありますか?私は実際に宝石用のフィーチャーファイルでこの種の比較を行う例は見当たらないので、これが意図されたものでないかどうかは分かりません。

+0

あなたは私たちにこのステップのステップ定義をしてください示しに「laserlemon」ありがとう? –

+0

@RyanBiggこれはjson_spec gemの一部として自動的に定義されています。そのステップのコードを書く必要はありませんでした。明らかに、それは私がそれを使用していたものよりもはるかに多くの「断片的な」ビットのデータをjson内で見つけるように設計されていました。ライブラリから別のステップを適用することで問題が解決されました。私は、このことは、JSONの断片を比較するためにJSON解析などのトンで費やされていた時間の節約になると言うことができます。あなたがAPIテストにキュウリを使用している場合は、このことを確認することを強くお勧めしますでる! –

答えて

0

Hehは別の場所で宝石の作者の一人から答えを得ました。ここに投稿します

インクルードは、多くの場合、 アレイに単純な値を含めるためのものです。 APIインデックスレスポンスからオブジェクトの配列が返された場合、 は、配列に1つの完全で同一のオブジェクトが含まれていると主張できます。 例のマッチャーの仕様を確認してください。何をやっている、私は別々のステップにそれを壊したいのために

Then the JSON at "package/name" should be "anothertestpackage" 
And the JSON at "package/description" should be "This is a test, testing 4 5 6" 
And the JSON at "package/package_type" should be <package_type> 
And the JSON at "package/duration" should be 30 
And the JSON at "package/start_date" should be "2012-03-01T08:00:00Z" 

それとも、 な

Then the JSON at "package" should have the following: 
    | name   | "anothertestpackage"   | 
    | description | "This is a test, testing 4 5 6" | 
    | package_type | <package_type>     | 
    | duration  | 30        | 
    | start_date | "2012-03-01T08:00:00Z"   | 
としてそれがより簡潔にするためにテーブル形式を使用することができ

私はそれが助けてくれることを願っています!ご質問ありがとうございます。

確かに、それは非常に助けなかった、

関連する問題