PHP中怎么优化端到端集成测试的代码

  介绍

这篇文章将为大家详细讲解有关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中怎么优化端到端集成测试的代码