我写了一个响应监听器来绕过一些特定的内容类型,我想知道UnitTest的最佳方法是什么。
你对我如何做到这一点有什么线索吗?
我是否需要创建Controller fixture来测试?
单元测试套件内是否允许进行功能测试?
答案 0 :(得分:1)
为听众编写单元测试非常简单。您只需要模拟侦听器所依赖的对象。在Symfony源代码中查找示例测试。
另一种方法可能是撰写functional test。
答案 1 :(得分:1)
从文档中,这是一个单元测试:
// src/Acme/DemoBundle/Tests/Utility/CalculatorTest.php
namespace Acme\DemoBundle\Tests\Utility;
use Acme\DemoBundle\Utility\Calculator;
class CalculatorTest extends \PHPUnit_Framework_TestCase
{
public function testAdd()
{
$calc = new Calculator();
$result = $calc->add(30, 12);
// assert that your calculator added the numbers correctly!
$this->assertEquals(42, $result);
}
}
这是一个功能测试:
// src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
namespace Acme\DemoBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DemoControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', '/demo/hello/Fabien');
$this->assertGreaterThan(
0,
$crawler->filter('html:contains("Hello Fabien")')->count()
);
}
}
请记住,功能测试无法测试Ajax等,因此最好使用功能性浏览器测试框架测试繁重的Ajax站点。
祝你好运答案 2 :(得分:0)
你可以使用它。
$logger = $this->client->getContainer()->get('logger');
$logger->info("data->" . $response->headers->get("Location"));