BDD с Cucumber и MySQL - проблемы с автоинкрементом - PullRequest
2 голосов
/ 22 октября 2009

Я пишу некоторые функции Cucumber для моего приложения RoR, которые вставляют записи в базу данных, а затем отправляют запрос в мой XML API. Из-за характера моих запросов (жестко закодированный XML) мне нужно знать, каким будет идентификатор строки. Вот мой сценарий:

Scenario: Client requests call info
  Given There is a call like:
    | id         | caller_phone_number |
    | 1          | 3103937123          |
  When I head over to call info
  And Post this XML:
    """
    <?xml version="1.0" encoding="UTF-8"?>
    <request-call-info>
      <project-code>1000000001</project-code>
    </request-call-info>
    """
  Then The call info should match
  And The status code should be 0

Я настроил Cuke с моей базой данных _test, и я также заметил, что она не сбрасывает все таблицы до запуска моих функций.

Как правильно это настроить? Спасибо!

1 Ответ

1 голос
/ 23 октября 2009

Во-первых, прости меня, так как это будет чем-то вроде мозгового выброса, но, надеюсь, это должно помочь или хотя бы дать тебе несколько идей:

Вы можете переписать свой сценарий так:

Scenario: Client requests call info
    Given There is a call with the phone number "3102320"
    When I post "request-call-info" xml to "call info" for the phone number "3102320"
    Then the call info for phone number "3102320" should match
        And the status code for phone number "3102320" should be 0

Таким образом, вы можете ссылаться на запись по атрибуту, который не является первичным ключом.

Вы используете светильники? Если это так, вы можете явно указать идентификатор записи.

В зависимости от вашего приложения вы можете запускать свои тесты, используя базу данных sqlite3 в памяти.

...