测试
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
测试
大致来说,有两种类型的测试。单元测试允许您测试特定函数的输入和输出。功能测试允许您命令一个“浏览器”,您可以在其中浏览站点上的页面,单击链接,填写表单,并断言您在页面上看到某些内容。
单元测试
单元测试用于测试您的“业务逻辑”,业务逻辑应该存在于独立于Symfony的类中。欧宝娱乐app下载地址出于这个原因,Symfony对您使欧宝娱乐app下载地址用什么工具进行单元测试并没有真正的意见。然而,最流行的工具是PhpUnit)而且PhpSpec.
功能测试
创建真正优秀的功能测试可能很困难,因此一些开发人员完全跳过这些测试。不要跳过功能测试!通过定义一些简单的功能测试,您可以在部署它们之前快速发现任何大错误:
最佳实践
定义一个功能测试,至少检查应用程序页面是否成功加载。
功能测试可以像下面这样简单:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
/ /测试/ AppBundle / ApplicationAvailabilityFunctionalTest.php名称空间测试\AppBundle;使用欧宝娱乐app下载地址\包\FrameworkBundle\测试\WebTestCase;类ApplicationAvailabilityFunctionalTest扩展WebTestCase{/ * * *@dataProviderurlProvider * /公共函数testPageIsSuccessful($url){$客户端=自我::createClient ();$客户端->请求(“得到”,$url);$这->assertTrue ($客户端->getResponse ()->isSuccessful ());}公共函数urlProvider(){返回数组(数组(' / '),数组(' /帖子'),数组(' / post / fixture-post-1 '),数组(' /博客/类别/ fixture-category '),数组(“/档案”),/ /……);}}
这段代码检查所有给定的url是否加载成功,这意味着它们的HTTP响应状态代码为之间200
而且299
.这看起来可能不是很有用,但是考虑到它所花费的精力很少,在应用程序中使用它是值得的。
在计算机软件中,这种测试被称为冒烟测试由初步测试,以揭示简单的故障,严重到足以拒绝一个预期的软件发布.
在功能测试中硬编码url
有些人可能会问,为什么前面的功能测试没有使用URL生成器服务:
最佳实践
硬编码功能测试中使用的URL,而不是使用URL生成器。
属性的功能测试,请考虑以下功能测试路由器
服务生成测试页面的URL:
1 2 3 4 5 6 7 8
公共函数testBlogArchives(){$客户端=自我::createClient ();$url=$客户端->getContainer ()->get (“路由器”)->生成(“blog_archives”);$客户端->请求(“得到”,$url);/ /……}
这个可以,但它有一个巨大的缺点。的路径blog_archives
路由,测试仍然会通过,但原来的(旧的)URL将不起作用!这意味着该URL的任何书签都将被破坏,你将失去任何搜索引擎页面排名。
测试JavaScript功能
内置的功能测试客户端很棒,但不能用于测试页面上的任何JavaScript行为。如果需要对此进行测试,请考虑使用貂库从PHPUnit。
当然,如果您有大量的JavaScript前端,您应该考虑使用纯JavaScript的测试工具。
了解关于功能测试的更多信息
考虑使用HautelookAliceBundle为您的测试fixture生成看起来真实的数据骗子而且爱丽丝.