Как вы используете пути в геме json_spec, если у вас нет массивов? - PullRequest
1 голос
/ 03 апреля 2012

Я использую гем "json_spec" в приложении Rails и пытаюсь создать несколько шагов Cucumber для документирования / тестирования моего кода API.

У меня есть следующий сценарий:

Scenario: Create new authorization
    Given an existing user and merchant
    When I post to "/api/v1/authorizations.json" with:
    """
    {"email":"user@email.com", "code": "43434", "merchant_account_id":1, "amount": 45.00}
    """
    And I keep the JSON response at "authorization/id" as "AUTH_ID"
    Then the JSON response should be:
    """
    {"authorization":{"id":1,"email":"user@email.com","amount":45.0}}
    """

Я ожидал, что «authorization / id» даст мне значение ключа «id» в хэше «authorizations». Все примеры в документации json_spec содержат массивы, но в этом случае ответ включает только одну сущность - не имеет смысла иметь массив в JSON. Есть ли способ использовать пути, когда нет массива?

1 Ответ

0 голосов
/ 17 октября 2012

Конечно, и вы использовали правильный синтаксис. Сценарии в примерах документации работают с ответом на сообщение, а затем проверяют, является ли это сообщение частью коллекции, а следовательно, и массивом. Но если бы вы проверяли, например, что ваш пост сейчас является последним постом (для которого вы получаете только одно значение), вы бы использовали синтаксис хеша:

Scenario: Create new authorization
    Given an existing user and merchant
    And I post to "/api/v1/authorizations.json" with:
    """
    {"email":"user@email.com", "code": "43434", "merchant_account_id":1, "amount": 45.00}
    """
    And I keep the JSON response at "authorization/id" as "AUTH_ID"
    When I get from "/api/v1/authorizations/last.json"
    Then the JSON response at "authorization/id" should be %{AUTH_ID}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...