我开始考虑Symfony中的twig模板的持续集成.
>模板是独立的逻辑.
>模板中有错误.但在开发过程中,我不想被视觉检查分散注意力.
除了通过lint来验证Twig模板文件的结构和语法正确性之外,您还可以对Twig模板的逻辑进行单元测试.
原文链接:https://www.f2er.com/php/133690.html例如,您可以验证if-elseif-else-endif构造的正确行为,并且您可以单独执行此操作,也就是说,无需通过具有所有依赖项的控制器.
看看https://github.com/journeymonitor/control/blob/2645c69/src/AppBundle/Resources/views/testcases/_testresults-overview-testresult-label.html.twig.这是一个非常简单的模板,但确实有一些行为 – 取决于testresult.exitCode的值,必须输出不同的标签名称.
在https://github.com/journeymonitor/control/blob/bc42e78/tests/AppBundle/Resources/views/testcases/_testresults-overview-testresult-label.html.twig.test.php,您可以看到此模板的单元测试用例.
测试用例设置了一个新的Twig_Environment,它允许您加载Twig模板文件并使用作为参数传入的不同Testresult对象进行渲染.然后可以像在任何其他PHPUnit测试中一样声明渲染操作的结果:
$loader = new Twig_Loader_Filesystem(__DIR__ . '/../../../../../src/AppBundle/Resources/views/testcases/'); $twig = new Twig_Environment($loader,array( 'cache' => '/var/tmp/journeymonitor-twig-tests-cache',)); $template = $twig->loadTemplate('_testresults-overview-testresult-label.html.twig'); $testresult = new \AppBundle\Entity\Testresult(); $testresult->setExitCode(0); $this->assertSame('success',$template->render(['testresult' => $testresult]));
注意第8行和第9行的shell命令–Twig环境缓存其模板文件,为了进行可靠的测试,您需要确保在每次测试运行之前擦除缓存位置:
`rm -rf /var/tmp/journeymonitor-twig-tests-cache`; `mkdir -p /var/tmp/journeymonitor-twig-tests-cache`;