Php symfony2 behat/mink HTTP POST未使用测试环境数据库

Php symfony2 behat/mink HTTP POST未使用测试环境数据库,php,symfony,functional-testing,behat,mink,Php,Symfony,Functional Testing,Behat,Mink,我将symfony2.7与behat3和Behat/mink1.5一起使用(就像在composer.json中一样) 我正在创建一个JSONAPI,还创建了两个数据库,一个用于开发,另一个用于测试(“MyDB”和“MyDB测试”) 我的问题始于尝试运行向服务器发出POST HTTP请求(使用Guzzle作为客户端)的场景 Scenario: Create a programmer Given I have the payload: """ { "name": "John", "lastn

我将symfony2.7与behat3和Behat/mink1.5一起使用(就像在composer.json中一样)

我正在创建一个JSONAPI,还创建了两个数据库,一个用于开发,另一个用于测试(“MyDB”和“MyDB测试”)

我的问题始于尝试运行向服务器发出POST HTTP请求(使用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();
}
这将按预期正确删除测试DDBB。 问题是HTTP POST请求通过控制器(显然)然后点击服务在DEV数据库中创建用户(而不是使用最近清理的测试DDBB)

当我使用TableNode数据运行GET场景时:

 | name | lastname| username | email             |  password  |birth       | type|
 | John | Doe     | john.doe |john.doe@email.com |  password  | 10/10/1970 | normal |
测试实际上命中了测试环境(因为我直接使用服务插入用户,而不需要执行控制器操作“positionAction”),所以一切都很顺利

是否有人知道如何始终而不仅仅是在使用服务时使用测试数据库?所有POST请求在第一次请求之后失败(因为唯一的约束阻止用户被插入),因此测试失败


谢谢大家,如果我错过了什么,请告诉我。

为什么不使用:?试试@COil说的。你应该这样做。谢谢你们的回答,伙计们。实际上,如果我在REST Chrome客户端中使用“app_test.php”,那么请求将正确地发送到测试数据库。但是如果我在Guzzle中输入'base_uri'=>',请求仍然会通过dev env(因为dev.log)文件记录引发的条令唯一约束的异常。奇怪的
/**
 * @BeforeScenario
 */
public function clearData()
{
   $this->_service->deleteUsers();
}
 | name | lastname| username | email             |  password  |birth       | type|
 | John | Doe     | john.doe |john.doe@email.com |  password  | 10/10/1970 | normal |