symfony2 behat/mink HTTP POST не использует тестовую базу данных env
Я использую Symfony 2.7 с Behat 3 и Behat/mink 1.5 (как в composer.json).
behat.yml:
default:
suites:
default:
contexts:
- FeatureContext:
service: '@user.service'
extensions:
Behat\MinkExtension:
base_url: http://api.localhost.dev
goutte: ~
selenium2: ~
Behat\Symfony2Extension: ~
Я создаю JSON API, а также создал 2 базы данных, одну для DEV и другую для TEST ("my-db" и "my-db-test")
config_test.yml:
...
doctrine:
dbal:
host: 127.0.0.1
dbname: my-db-test
user: root
password: root
config_dev.yml:
...
doctrine:
dbal:
host: 127.0.0.1
dbname: my-db-dev
user: root
password: root
Моя проблема начинается при попытке запустить сценарий, который отправляет HTTP-запрос POST (используя Guzzle в качестве клиента) на сервер.
Scenario: Create a programmer
Given I have the payload:
"""
{
"name": "John",
"lastname" : "Doe",
"username": "john.doe",
"email": "john.doe@email.com",
"password": "password",
"birth": "10/10/1970",
"type": "normal"
}
"""
When I request "POST" "/users"
Then the response status code should be "201"
And the "Location" header should be "http://api.localhost.dev/users/john.doe"
В файле FeatureContext.php у меня есть сценарий @Before
/**
* @BeforeScenario
*/
public function clearData()
{
$this->_service->deleteUsers();
}
Это правильно удаляет TEST DDBB, как и ожидалось. Проблема в том, что запрос HTTP POST проходит через контроллер (очевидно), а затем попадает в службу, чтобы создать пользователя в базе данных DEV (вместо использования недавно очищенной TEST DDBB)
Когда я запускаю сценарий GET, используя данные TableNode:
| name | lastname| username | email | password |birth | type|
| John | Doe | john.doe |john.doe@email.com | password | 10/10/1970 | normal |
Тест на самом деле попадает в TEST env (поскольку я вставляю пользователя непосредственно с помощью сервиса, БЕЗ выполнения действия контроллера "postUserAction"), так что все идет хорошо.
Кто-нибудь знает, как использовать базу данных TEST всегда, а не только при использовании сервиса? Весь запрос POST завершается с ошибкой после первого (поскольку ограничение UNIQUE предотвращает вставку пользователя), поэтому тесты не пройдены.
Спасибо всем и дайте мне знать, если я что-то пропустил.