kohana/koharness

通过引导临时 kohana 应用程序并包含依赖项来为 kohana 模块创建测试工具

v0.1.1 2014-07-17 21:58 UTC

This package is auto-updated.

Last update: 2024-09-19 09:29:07 UTC


README

Build Status

koharness 是一个非常简单的包(阅读,黑客),它为您的 Kohana 模块提供了一个干净的测试环境。它可以生成包含您的模块和任何依赖项的基本 Kohana 应用程序,然后您可以使用它来运行测试。

koharness 允许您完全控制模块加载顺序,这对于设计为使用级联文件系统扩展其他模块的模块可能是至关重要的。

在您的模块中安装 koharness

在您的模块的 composer.json 中将其添加为开发依赖项

{
	"require-dev": {
		"kohana/koharness" : "*@dev"
	}
}

在您的模块的根目录中运行 composer install

配置模块依赖项

您的模块几乎肯定需要 kohana 核心(如果不需要,您可能可以在没有 koharness 或任何其他引导程序的情况下独立测试它——这显然是好的)。

如果您想使用 phpunit,您可能还需要 Kohana unittest 模块。

将它们(以及您可能需要的任何其他内容)添加到您的 composer.json 中。为了额外的整洁性,强制 composer-installers 将 kohana 模块安装到正常的 vendor 路径,而不是 /modules(注意,这不会影响您的模块的最终用户)。

{
	"require": {
		"kohana/core":     "3.3.*",
	},
	"require-dev": {
		"kohana/unittest": "3.3.*",
		"kohana/koharness" : "*@dev"
	},
	"extra": {
		"installer-paths": {
		"vendor/{$vendor}/{$name}": ["type:kohana-module"]
	}
  }
}

这将安装所有依赖项到您的机器上,但您需要告诉 koharness 如何为您的测试环境引导它们以及它们应该按什么顺序通过 Kohana::modules() 加载。

在存储库根目录中添加一个 koharness.php 文件

// {my-module-root}/koharness.php
return array(
	// This list of paths will also be passed to Kohana::modules(). Define the modules (including your own)
	// in the order you want them to appear in Kohana::modules()
	'modules' => array(
		'my-module' => __DIR__,
		'unittest'  => __DIR__.'/vendor/kohana/unittest'
	),

	// You can specify where to create the harness application - the default is /tmp/koharness
	'temp_dir' => '/home/me/testing'
);

构建您的工具

现在您的模块在一个目录中,其中包含所有依赖项,因此需要将其“翻转”以更类似于将模块作为依赖项的标准应用程序。这就是 koharness 发挥作用的地方。

在您的模块根目录中,只需运行 vendor/bin/koharness(假设您正在使用 composer 的默认 bin-dir 设置)。这将清除您指定的临时目录并构建一个类似于以下结构的符号链接和文件

$temp_dir
\---application
|   \---cache
|   \---logs
|   |   bootstrap.php
|
\---modules
|   \---my-module -> WORKING_DIR
|   \---unittest  -> WORKING_DIR/vendor/kohana/unittest
|
\---system -> WORKING_DIR/vendor/kohana/core
\---vendor -> WORKING_DIR/vendor

bootstrap.php 是从 koharness 一起提供的标准 Kohana 3.3 模板生成的,其中包含您的模块。

运行测试

一旦构建了您的工具,您可以使用您喜欢的任何工具来运行测试。

PHPUnit 与 Kohana unittest 模块

简单易行

cd /tmp/koharness
vendor/bin/phpunit --bootstrap=modules/unittest/bootstrap.php modules/unittest/tests.php

其他工具

如果您想在 phpspec、behat 或类似工具中加载您的 Kohana 环境,您会发现您的模块工作目录中包含一个 koharness_bootstrap.php,它定义了您通常从 index.php 或 unittest 模块运行程序中获得的各个路径常量。

例如,在 phpspec 中,您可以这样做:

// MODULE_ROOT/spec/ObjectBehavior.php
<?php
namespace spec;
require_once(__DIR__.'/../koharness_bootstrap.php');
abstract class ObjectBehavior extends \PhpSpec\ObjectBehavior {}
// MODULE_ROOT/spec/You/YourClassSpec.php
<?php
class YourClassSpec extends \spec\ObjectBehavior

为 Travis 配置

为了在 travis 上自动构建您的模块,您只需这样做:

language: php
install:
  - composer install
  - vendor/bin/koharness
  
script: vendor/bin/phpunit --bootstrap=modules/unittest/bootstrap.php modules/unittest/tests.php

许可证

koharness 版权所有 (c) 2014 Kohana 团队,并按 BSD 许可证分发。

它是由 inGenerator Ltd 贡献给 Kohana 项目的。