我正在尝试同时学习Symfony
和PHP
。我从写测试开始,已经有问题了。我有这2条重复的行
$client = static::createClient();
$crawler = $client->request('GET', '/');
我可以告诉我会使用很多。所以我希望这能节省测试速度并设计更好。这是我的测试文件代码:
<?php
namespace Qnsi\StaticBunde\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
#I want this class to only test /, other class to test About,Contact etc.
class StaticControllerIndexTest extends WebTestCase
{
public function testStaticControllerControllsRequest()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
$this->assertEquals(
'Qnsi\StaticBunde\Controller\StaticController:indexAction',
$client->getRequest()->attributes->get('_controller'));
}
public function testRouteToRootExists()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
$this->assertTrue(200 === $client->getResponse()->getStatusCode());
}
}
?>
到目前为止,我发现我需要使用setUpBeforeClass()
并在那里初始化我的变量。但我真的不知道怎么做。我试过了
private $client;
private $crawler;
public static function setUpBeforeClass()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
}
和不同的组合,但我无法弄明白。
我知道这是我缺乏良好的PHP基础,但这是我更喜欢学习的方式。通过调整和学习示例。可悲的是,我很难在github
Symfony
找到一个好的测试示例,所以我不得不来这里打扰你。
答案 0 :(得分:2)
如果您需要在每次测试之前初始化某些内容,请使用setUp方法:
public function setUp()
{
$this->client = static::createClient();
$this->crawler = $this->client->request('GET', '/');
}