Php symfony2 behat/mink HTTP POST未使用测试环境数据库
我将symfony2.7与behat3和Behat/mink1.5一起使用(就像在composer.json中一样) 我正在创建一个JSONAPI,还创建了两个数据库,一个用于开发,另一个用于测试(“MyDB”和“MyDB测试”) 我的问题始于尝试运行向服务器发出POST HTTP请求(使用Guzzle作为客户端)的场景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
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 |