korstiaan/drunit

Drupal 引导程序,简化您 Drupal 模块的集成/功能测试

dev-master 2014-03-27 13:14 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:40:29 UTC


README

Drupal 引导程序,简化您 Drupal 模块的集成/功能测试。

Build Status

要求

  • PHP 5.3.3+(遗憾的是,Drupal 中 SQLite 的实现与 PHP 5.4 不兼容)
  • PDO SQLite 驱动程序
  • Drupal 7.* 所需的任何其他扩展

安装

推荐使用 composer 安装 Drunit。只需将以下内容添加到您的 composer.json

   {
       "repositories": [
           ...
           {
              "type": "package",
              "package": {
                  "version": "7.23",
                  "name": "drupal/core",
                  "dist": {
                      "url": "http://ftp.drupal.org/files/projects/drupal-7.23.zip",
                      "type": "zip"
                  }
              }
           }
       ],
       "require-dev": {
       	   ...
           "korstiaan/drunit": "*"
       },
       "scripts": {
           "post-install-cmd": [
               ...
               "Drunit\\Composer\\ScriptHandler::installDrupal"
           ],
           "post-update-cmd": [
               ...
               "Drunit\\Composer\\ScriptHandler::installDrupal"
           ]
       }
   }

并将 drupal/core 定义中的版本更改为您要测试的 Drupal 版本。

现在更新 composer 并安装新添加的要求及其依赖项

$ php composer.phar update korstiaan/drunit --dev

使用方法

引导 Drupal

首先通过将其包含在测试引导文件中初始化 composer 的自动加载

// tests/bootstrap.php
use Drunit\Drunit;

require __DIR__ . '/../vendor/autoload.php';
 

在每个测试中引导 Drupal

Drunit 提供了一个 TestCase 类,该类引导 Drupal 到其最终阶段 DRUPAL_BOOTSTRAP_FULL,并确保每个测试都在其自己的独立进程中运行。只需扩展它以使用它

use Drunit\TestCase;

class FooTest extends TestCase 
{
    ...
}

启用您的模块

要在测试中启用您的模块,只需将以下内容添加到您的测试中

use Drunit\TestCase;

class FooTest extends TestCase
{
    public function setUp()
    {
        parent::setUp();
        Drunit::enableModule(__DIR__.'/../module', array('my_module'));
    }
    ...
}

这将启用位于 __ROOT__.'/module' 的模块 my_module(Drupal 会递归查找文件 my_module.module)。

如果您有多个位于单个目录中的模块(例如 __ROOT__.'/modules/my_module1'__ROOT__.'/modules/my_module2),您可以如下启用所有模块

Drunit::enableModule(__DIR__.'/../modules', array('my_module1', 'my_module2'));

如果您的模块名称与目录的基本名称相同,则可以省略第二个参数

Drunit::enableModule(__DIR__.'/../modules/my_module1');

许可证

Drunit 在 MIT 许可证下发布。