我已使用Symony2在REST控制器中创建了一个非常简单的控制器,其中包含数据库插入/更新/删除操作。
有没有一种好的方法可以为这些控制器操作编写单元/集成测试,而不会污染生产数据库?我是否必须使用不同的环境 - 或者框架供应商是否提出了一个建议的方法来解决这个问题?
当前控制器示例:
public function postAction()
{
$json = $this->getRequest()->getContent();
$params = json_decode($json);
$name = $params->name;
$description = $params->description;
$sandbox = new Sandbox();
$sandbox->setName($name);
$sandbox->setDescription($description);
$em = $this->getDoctrine()->getManager();
$em->persist($sandbox);
$em->flush();
$response = new Response('/sandbox/'.$sandbox->getId());
$response->setStatusCode(201);
return $response;
}
当前测试示例:
class SandboxControllerTest extends WebTestCase
{
public function testRest()
{
$client = static::createClient();
$crawler = $client->request('POST', '/service/sandbox', array(), array(), array(), json_encode(array('name' => 'TestMe', 'description' => 'TestDesc')));
$this->assertEquals(
201, $client->getResponse()->getStatusCode()
);
}
}