这篇文章将为大家详细讲解有关PHP中怎么优化端到端集成测试的代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
概述
在这里,我们可以使用为行为驱动开发构建的工具,官方PHP的黄瓜实现——Behat。我们可以通过运行以下代码来安装它:
美元PHP作曲家。phar需要- dev behat/behat
引用>增加一个目标到构建。xml(在本文的第一部分中描述了Phing设置)
& lt; target name=癰ehat"比; & lt; exec 可执行=癰in/behat", passthru=皌rue", checkreturn=皌rue",/比; & lt;/target>… & lt; target name=皉un",取决于=皃hpcs, phpcpd,表象,phpspec, behat",/在然后,你应该为文件特性/价格。特性的测试创建一个规范。
特点:价格比较,为了比较价格,作为客户,我需要打破货币障碍,场景:比较和PLN欧元,好给我使用的平衡点。pl比较器,,当我比较“100欧元”和“100 pln”,,那么它应该返回一些结果
引用>这个测试场景非常容易阅读,并且应该给你一个关于该特性应该如何工作的良好印象。不幸的是,计算机通常并不真正理解人类语言,所以现在是为每一步编写代码的时候了。
你可以通过运行。/bin/behat-init来生成它的代码模板。它应该会创建一个这样的类:
//功能/引导/FeatureContext.php use Behat \ Behat \环境\ SnippetAcceptingContext; use Behat \小黄瓜\ \ PyStringNode节点; use Behat \小黄瓜\ \ TableNode节点; class FeatureContext  implements SnippetAcceptingContext {/* *,*,Initializes 上下文只*/,public function __construct (), {,} }然后你可以执行:
美元bin/behat——即将append-snippets
引用>behat将自动为场景中定义的每个步骤创建函数。
现在你可以通过填充函数的主体来开始实现真正的检查://,/引导/FeatureContext.php特性 php & lt; ? use Behat \ Behat \环境\上下文; use 域\价格;use 域\ PriceComparator; use 基础设施\ NBPPriceConverter;/* * *,Defines application  features 得到,specific 上下文。*/class FeatureContext  implements 上下文{/* *,@var PriceComparator */, private priceComparator美元;/* *,@var int */, private 结果;美元,/* *,*,Initializes 上下文只*, *,Every scenario  gets its own context 实例。 *,你还要also pass arbitrary arguments 用*,context constructor through behat.yml只*/public function  __construct (), {, },/* *,*,@Given 小姐:use nbp.pl comparator */, public function  iUseNbpPlComparator (), {=$ this→priceComparator new PriceComparator (new NBPPriceConverter ()); },/* *,*,@When 小姐:compare price1 以及:price2 */public function  iCompareAnd (price1美元,,price2美元),{ preg_match (& # 39;/(\ d +) ([a - z] +)/& # 39;,, price1美元,美元match2),, preg_match (& # 39;/(\ d +) ([a - z] +)/& # 39;,, price2美元,美元match3); $ price1 =, new 价格(美元match2[1],,美元match2 [2]); $ price2 =, new 价格(美元match3[1],,美元match3 [2]);=$ this→result $ this→priceComparator→比较(price1美元,,price2美元),, },/* *,*,@Then It should return some result */, public function  itShouldReturnSomeResult (), { if (! is_int ($ this→结果)),{ throw new  \ DomainException (& # 39; Returned value is not 整数# 39;); }, } }最后,使用。/bin/phing运行所有的测试。你应该得到以下结果:
构建文件:/home/maciej/workspace/php-testing/构建。xmlMyProject祝辞phpcs: MyProject的祝辞由塞巴斯蒂安phpcpd: phpcpd 4.0.0 Bergmann.0.00%重复行103行代码。时间:17女士,记忆:4.00 mb MyProject的在表象:MyProject的祝辞phpspec:/,跳过:0%,/,等待:0%,/传递:100%,/,失败:0%,/,破碎:0%,/,3 examples2 specs3例子(3)通过15 ms MyProject的祝辞behat:特点:价格比较为了比较价格作为客户我需要打破货币障碍,场景:比较和PLN欧元,,,,#特性/价格。特点:6,好给我使用的平衡点。pl比较器,,,,# FeatureContext:: iUseNbpPlComparator (),当我比较“100 eur"和“100 pln"# FeatureContext:: iCompareAnd (),那么它应该返回一些结果,,# FeatureContext:: itShouldReturnSomeResult() 1场景(1)通过3步骤(3)通过0 m0.01s (9.13 mb) MyProject的祝辞null
PHP中怎么优化端到端集成测试的代码