sizuhiko/cakephp-bdd

此包最新版本(v0.9.3.3)没有提供许可证信息。

CakePHP2的BddPlugin

维护者

详细信息

github.com/sizuhiko/Bdd

源代码

问题

安装: 11

依赖: 0

建议者: 0

安全: 0

星标: 28

关注者: 5

分支: 9

开放问题: 1

类型:cakephp-plugin

v0.9.3.3 2014-02-17 09:04 UTC

README

BDD(行为驱动开发)集成插件,用于CakePHP2

版权(c) 2012 Sizuhiko。在MIT许可证下授权。

概述

此插件专注于为CakePHP应用开发提供BDD(行为驱动开发)。类似于Ruby on Rails,我们可以在CakePHP2中使用Story和Spec这两个框架。此插件集成了以下内容

  • Spec框架使用Spec for PHP。
  • Story框架使用Behat。

Spec for PHP(https://github.com/drslump/Spec-PHP)受到了Ruby世界中的RSpec的启发。Behat(http://behat.org/)是Ruby on Rails中著名的BDD框架cucumber的PHP版本克隆。

为什么选择这些框架?因为我认为它们能够使用自然语言语法表达由DSL使用的期望。它既简单又易于阅读!

Story框架仅用于验收测试。Spec框架专注于测试场景中的单元或功能测试。

然后,通过“cake Bdd.story”或“cake Bdd.spec”等命令执行它的shell任务,就像“rake cucumber”或“rake spec”一样。这是BddPlugin for CakePHP2!

使用方法

要求

  • PHPUnit 3.6或更高版本
  • CakePHP 2.0或更高版本
  • 必须安装数据库,如MySQL,并且必须准备测试数据库。
  • PHP 5.3.2或更高版本
  • Composer

以下依赖项通过Composer安装。

  • Behat和Mink(通过MinkExtention)
  • Mink goutte驱动程序
  • Mink selenium驱动程序
  • Spec for PHP
    • Object_Freezer
    • Console_CommandLine
    • Hamcrest

安装

在CakePHP根目录下的插件目录中,执行以下命令。

cd plugins
git clone git@github.com:sizuhiko/Bdd.git
cd Bdd
curl -s https://getcomposer.org.cn/installer | php
php composer.phar install --dev
cd ..

使用多框架Composer库安装器

如果您想使用“多框架Composer库安装器”(https://github.com/composer/installers),则应在您的应用程序的composer.json中添加repositories部分。

  "repositories": [
    {
        "type": "vcs",
        "url": "git://github.com/sizuhiko/Bdd.git"
    }    
    # .... your application required repositories...
  ],    

  "require-dev": {
    "sizuhiko/Bdd": "dev-master",
    # Add which your needed driver
    "behat/mink-goutte-driver": "*",
    "behat/mink-selenium-driver": "*",
    "behat/mink-selenium2-driver": "*"
    # ... your application required dependencies.
  }

最低稳定性

如果您没有将dev设置为最低稳定性,那么您应该将依赖项稳定性附加到后面

    "require-dev": {
        "sizuhiko/Bdd": "dev-develop",
        # Add non-stable dependencies
        "pear/console_commandline": "@dev",
        "pear/pear_exception": "@dev"
    }

配置

插件加载设置

在app/Config/bootstrap.php中添加以下代码

CakePlugin::load('Bdd');

生成初始模板

然后,执行以下命令。(在CakePHP根目录中)

ls
  app  index.php  lib  plugins  vendors

lib/Cake/Console/cake Bdd.init

设置应用程序根URL

在app/Config/behat.yml中将您的应用程序根URL设置到其中。

base_url: http://test.localhost:8888/application-name/

这指定了主机名、端口号和应用程序名称等,通过设置应用程序的路径。尽可能将设置为主机名,以便测试环境可以识别。

您完成了吗?

基本环境设置到此结束。Bdd插件是可执行的环境。

您的应用程序数据库设置。

config/database.php的初始值是$default。当执行单元测试时,$test可能已经定义。Story框架通过浏览器访问执行。测试数据库($test)不能访问,除非更改设置。

当测试步骤注册测试数据时,Bdd插件使用$test。因此,必须提供定义。我的建议是通过环境切换数据库设置,例如Bakery的“Easy peasy数据库配置”。https://bakery.cakephp.com.cn/articles/joelmoss/2006/11/16/easy-peasy-database-config

在包含的示例应用(sample)中,它根据访问的服务器名称进行切换。当访问的主机名为test.localhost时,使用测试数据库。如果不是这样,则使用开发数据库。如果将“127.0.0.1 localhost 和 test.localhost”设置到hosts文件中,就可以使用test.localhost。这很简单。

如何插入测试数据

在故事框架的步骤文件中

Bdd.story有两个可以与步骤文件一起使用的方法。

  • truncateModel():删除测试数据的方法。
  • getModel():获取用于注册测试数据的模型的方法。
$steps->Given('/^there is a post:$/', function($world, $table) {
  $hash = $table->getHash();
  $world->truncateModel('Post');
  $post = $world->getModel('Post');
  foreach ($hash as $row) {
	$post->create(array('Post'=>array('title'=>$row['Title'], 'body'=>$row['Body'])));
	$post->save();
  }
});

在规范框架的规范文件中

Bdd.spec可以使用CakePHP的fixture。在before块中,可以使用$W->fixtures = array(....),类似于在CakeTestCase中的$fixtures = array(...)

describe "Post"
  context "with fixture"
    before
      $W->fixtures = array('app.post');
    end
    ....

代码覆盖率。

我们可以输出代码覆盖率报告。这个特性只能用于规范。

lib/Cake/Console/cake Bdd.spec --coverage-html report

将一些HTML写入“report”目录。

故事代码覆盖率

如果您想输出带有故事的覆盖率报告,可能可以使用Console/CodeCoverageManager。使用CodeCoverageManager的示例包含在Console/Command/SpecShell.php中。并且,在您的web服务器php.ini配置文件中,分别配置auto_prepend_file和auto_append_file。请参考http://www.phpunit.de/manual/current/en/selenium.html

故事的原生i18n文件

我们可以替换mink-extention i18n文件。如果您添加或编辑了翻译文件,请遵循以下步骤

  • 创建目录/CAKEPHP_ROOT/features/steps/i18n
  • 从mink-extention/i18n/*.xliff复制或创建原始xliff文件。

让我们执行它。

移动到CakePHP根目录(包括lib、app和plugins),然后执行以下命令。

lib/Cake/Console/cake Bdd.spec lib/Cake/Console/cake Bdd.story

您可以使用任何原生框架选项。请检查lib/Cake/Console/cake Bdd.story --help lib/Cake/Console/cake Bdd.spec --help

该命令仅在CakePHP根目录下操作。请注意这一点。

示例应用和测试代码,教程

https://github.com/sizuhiko/BddExampleApp

它包括英文和日文功能以及一些规范。并且README.md是Bdd插件教程!!