我写了一个响应监听器来绕过一些特定的内容类型,我想知道对它进行单元测试的最佳方法是什么。
你对我怎么能做到这一点有任何线索吗?
我需要创建控制器夹具来测试吗?
单元测试套件中是否允许进行功能测试?
我写了一个响应监听器来绕过一些特定的内容类型,我想知道对它进行单元测试的最佳方法是什么。
你对我怎么能做到这一点有任何线索吗?
我需要创建控制器夹具来测试吗?
单元测试套件中是否允许进行功能测试?
为听众编写单元测试相当简单。您只需要模拟您的侦听器所依赖的对象。在 Symfony 源代码中查找示例测试。
另一种方法可能是编写功能测试。
你可以使用这个。
$logger = $this->client->getContainer()->get('logger');
$logger->info("data->" . $response->headers->get("Location"));
从文档中,这是一个单元测试:
// 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 站点。
祝你好运