PHP中的快照测试:一种革命性的测试方法
>
Matt Trask,Paul M. Jones和Yazid Hanifi对同行评审。 感谢SitePoint的同行评审!
编程突破是罕见且令人振奋的。 快照测试对我来说是这样的时刻,从根本上改变了我的方法。 尽管我的背景处于PHP,但最初在JavaScript中遇到的这项技术为PHP开发带来了重大好处。 让我们探讨什么是快照测试以及它如何增强PHP应用程序开发。
键概念
>自动比较:快照测试捕获应用程序输出或状态,并将其与存储的“快照”进行比较,自动突出了复杂数据结构或UIS中的差异。 >
>动态基线:> 解决问题
>“ HTML和JavaScript的混合”不是问题的分离,而是
<code class="language-javascript">function Tweet(props) { return ( <div classname="tweet"> <img src="%7Bprops.user.avatar%7D" alt="快照测试是什么,在PHP中可行?" > <div classname="text"> <div classname="handle">{props.user.handle}</div> <div classname="content">{props.content}</div> </div> </div> ); }</code>>
可以使用XHP等框架在PHP中复制不寻常的语法(尽管兼容性需要检查)。props
传统接口测试限制>
诸如硒和Behat之类的方法模拟浏览器相互作用以测试接口。但是,这些可能是脆弱的,它依赖于确切的标记结构而不是基本的逻辑。
快照测试:出色的方法>
快照测试利用诸如react示例之类的组件的确定性。 我们定义组件的渲染行为,测试捕获给定输入的输出。 随后的测试与此快照进行比较。Tweet
带有Phpunit快照断言
PHP实现 库简化了PHP中的快照测试。 通过作曲家安装它:
然后,在您的phpunit测试中使用所提供的断言:spatie/phpunit-snapshot-assertions
<code class="language-javascript">function Tweet(props) { return ( <div classname="tweet"> <img src="%7Bprops.user.avatar%7D" alt="快照测试是什么,在PHP中可行?" > <div classname="text"> <div classname="handle">{props.user.handle}</div> <div classname="content">{props.content}</div> </div> </div> ); }</code>的输出,并将其比较与存储的快照。
<code class="language-bash">composer require --dev spatie/phpunit-snapshot-assertions</code>php
$this->renderMyComponent()
中的用例
>>模板测试:
快照测试提供了一种强大而有效的方法来测试PHP应用程序的复杂方面。 它处理动态产出和充当生活文档的能力使其成为任何PHP开发人员的测试库的宝贵补充。 探索其潜力并将其集成到您的工作流程中,以获得更健壮和可维护的代码。
以上是快照测试是什么,在PHP中可行?的详细内容。更多信息请关注PHP中文网其他相关文章!