测试

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐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测试WebTestCaseApplicationAvailabilityFunctionalTest扩展WebTestCase/ * * *@dataProviderurlProvider * /公共函数testPageIsSuccessfulurl客户端自我::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生成看起来真实的数据骗子而且爱丽丝

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。