我正在尝试为symfony控制器编写单元测试用例。
控制器代码
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
class Controller1 extends SecuredController
{
public function preExecute(Request $request) {
parent::preExecute($request);
}
public function indexAction()
{
return $this->render('help/index.html.twig');
}
我已尝试编写如下所示的测试用例,但它会引发 内部错误
namespace Tests\AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class Controller1Test extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$response = $client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
}
任何建议对我都有帮助
答案 0 :(得分:1)
首先,是UNIT测试。你这里不需要客户。你只需要你想要测试的课程。
namespace Tests\AppBundle\Controller;
use PHPUnit\Framework\TestCase;
use AppBundle\Controller\Controller1;
class Controller1Test extends TestCase
{
public function testIndex()
{
$this->request = $this->getMockBuilder(
'Symfony\Component\HttpFoundation\Request'
)->disableOriginalConstructor()
->getMock();
$controller = new Controller1();
$controller->preExecute($this->request);
$response = $controller->indexAction();
$this->assertEquals(
200,
$response->getStatusCode()
);
}
}
例如您的代码可能是
namespace Tests\AppBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
class Controller1 extends SecuredController
{
public function indexAction()
{
return new Response();
}
}