改进 PHPUnit 对 BDD 的支持

操作方法

  • 01

    PHPUnit 3.3 测试版已经支持 BDD 了,但有两个主要的缺点: 1、测试代码和 Story 文本差距很大,不容易编写和阅读; 2、如果有失败的测试,没法显示出到底是哪一个测试没有通过。 经过简单的扩展,并且利用 PHP 5.3 对闭包的支持,可以采用下面的格式编写 BDD 测试代码: /*** 测试从账户中取现*/class AccountHolderWithdrawsCashSpec extends PHPUnit_Extensions_Story_Runner{  /**   * @scenario   * 场景 1: 帐户有足够的资金   */  function AccountHasSufficientFunds()  {    // GIVEN    $this->given('帐户余额为 100', function (& $world)       {        // 由于 Account 对象必须属于一个 AccountHolder(帐户持有人),        // 因此需要构造一个 AccountHolder 对象        $account_holder = new AccountHolder();        $account_holder->name = 'tester';        // 创建一个 Account 对象,并设置余额为 $arguments[0]        $world['account'] = new Account($account_holder);        $world['account']->balance = 100;      })      ->and('有效的银行卡', function (& $world)      {        $world['card'] = new CreditCard($world['account']);        $world['card']->valid = true;      })      ->and('提款机有足够现金', function (& $world)      {        // 确保 ATM 的余额大于帐户余额        $world['atm'] = new ATM();        $world['atm']->balance = $world['account']->balance + 1;      })    // WHEN    ->when('帐户持有人要求取款 20', function (& $world)      {        $world['account']->drawingByATM($world['atm'], $world['card'], 20);      })    // THEN    ->then('提款机应该分发 20', function (& $world, $action)      {        $this->assertEquals(20, $world['atm']->last_dispense, $action);      })      ->and('帐户余额应该为 80', function (& $world, $action)      {        $this->assertEquals(80, $world['account']->balance, $action);      })      ->and('应该退还银行卡', function (& $world, $action)      {        $this->assertTrue($world['card']->isCheckedOut(), $action);      });  }} 看上去应该好看多了,呵呵。

(0)

相关推荐

  • win8.1新功能支持NFC打印及WiFi热点让win8简单实用

    了Windows 8.1的更多细节功能,其中就包括支持NFC打印及Wi-Fi热点功能。对企业用户来说,这两个功能的加入无疑会让Windows 8.1变得更加实用。 微软在Windows Busines ...

  • Win8.1驱动程序安装运行方式的改进

    驱动程序是沟通软件与硬件的桥梁,你的设备能否运行正常,能否发挥全部性能,取决于你安装的驱动程序是否安全、稳定、设备匹配度。 由于驱动程序运行在系统底层,在内核下运行,所以驱动一旦出现故障,小则造成电脑 ...

  • Excel2010表格中数据透视表的改进方法

    通过以下的改进和新增功能,用户可在Microsoft Excel2010中更加轻松和快捷地使用数据透视表和联机分析处理(OLAP)数据透视表。 计算性能 在Excel2010中,多线程计算有助于加快数 ...

  • Win 8.1新功能支持NFC打印及WiFi热点

    根据国外媒体的报道,微软近日在新奥尔良举办的TechED大会上公布了Windows 8.1的更多细节功能,其中就包括支持NFC打印及Wi-Fi热点功能。对企业用户来说,这两个功能的加入无疑会让Wind ...

  • Excel2010表格数据透视表改进和新增功能讲解

    计算性能在Excel2010中,多线程计算有助于加快数据透视表中的计算速度,从而提高数据透视表的整体性能.这意味着,当您处理大量数据时(例如对数据透视表中的数据进行排序和筛选时),可以更快地获得结果. ...

  • Windows8 系统的多显示器功能介绍

    早在Win98时代,微软便已经在系统中加入了多显示器支持,但当时无论在功能还是兼容性方面,都表现得不够理想。随着Windows8开发者预览版上月发布,全球数以亿计的网友都开始下载并安装了这套新系统,在 ...

  • A85主板怎么样及热门A75主板推荐

    A85是AMD搭配二代APU推出的高端主板,默认配备FM2插槽以搭配二代APU,相比A75,它主要改进在于可以提供双卡支持和更多的SATA3.0接口、更强的RAID硬盘此阵列支持。从接口数量上来看,A ...

  • 全面优化ATA磁盘性能

    流行的ATA/66(即Ultra DMA/66或UDMA/66)以及ATA/100(即Ultra DMA/100或UDMA/100)标准分别支持66MBps和100MBps的最大传输速率,最新的Ser ...

  • 11月 Win8.1 Update 3更新哪些内容?开始菜单依然没有

    微软在此前曾承诺在今年内给Windows 8.1带来三次重大更新,现在他们终于兑现了承诺。 首先是4月份,微软发布了Win8.1 Update。而随后在8月份,微软又推送了8月更新,尽管他们不承认这是 ...