BDD с огурцом и MySQL & # 8212; проблемы с автоинкрементом
-
05-07-2019 - |
Вопрос
Я пишу некоторые функции 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, и я также заметил, что она не сбрасывает все таблицы до запуска моих функций.
Как правильно это настроить? Спасибо!
Решение
Во-первых, прости меня, так как это будет чем-то вроде мозгового выброса, но, надеюсь, это должно помочь или хотя бы дать тебе несколько идей:
Вы можете переписать свой сценарий так:
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 в памяти.