bound1ess / essence
提供干净和灵活的BDD风格API的高度评价PHP断言框架。
1.5.1
2015-04-06 16:02 UTC
Requires
- php: >=5.4.0
- php-packages/container: ~1
- php-packages/dumpy: ~1
- php-packages/fluent: ~1
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4
README
Essence是一个非常适合PHP现有PHPUnit项目的非常灵活的BDD风格断言框架。
安装
composer require --dev bound1ess/essence
理念
在大多数PHP测试框架中,你都会绑定到具体的匹配器名称(例如,assertEqual,shouldHaveType)。我不喜欢这样。这就是我创建Essence的原因。
使用方法
为了运行一个匹配器,您需要在查询字符串中指定它。那么查询字符串是什么?看看下面
this("someValue")->should_have_length_of(10); # => "someValue should have length of 10" expect(123)->toBeAbove(120); # => "expect 123 to be above 120" $elements = [1, 2, 3, 4, 5]; these($elements)->values->should_contain(5); # => "these elements should contain a value '5'" expect(null)->not()->to()->beNull(); => "expect NULL not to be NULL"
是的,Essence足够聪明,可以像您期望的那样处理所有这些情况。那么,您如何构建查询字符串(或断言)呢?
- 决定您是否需要配置您计划使用的匹配器。目前,只有两个匹配器可以在配置模式下使用 -
ValuesMatcher和KeysMatcher。 - 确定您需要使用哪个匹配器来完成工作。是
ThrowMatcher还是,比如说,RespondMatcher? - 添加一些链接以使断言更易于阅读。
- 选择合适的入口点(
expect,this,these等)。 - 传递适当的值和参数。
- 如果您想,可以添加
->go()以立即执行验证。我稍后会向您介绍更多关于它的信息。
配置
首先,Essence利用单例模式在运行时持久化所有重要数据。这意味着这个表达式始终等于 true
spl_object_hash(essence()) == spl_object_hash(essence());
您可以通过使用 configure 方法配置Essence
essence()->configure(function($config) { return array_merge($config, [ "exception" => "Your\Custom\AssertionException", ]); });
可用的配置选项
显式和隐式,验证所有和PHPUnit扩展
如果您不想每次都编写 ->validate() 或 ->go(),您可以选择启用隐式验证
essence()->configure(function() { return [ "implicit_validation" => true, ]; });
它将在您创建新的断言时验证上一个(上一个)断言。或者,甚至更好,只需使用以下所示的PHPUnit扩展
class MyTestCase extends Essence\Extensions\PhpunitExtension { // Your assertions here. }
它将为您完成工作,无需配置任何内容或调用 go/validate。
详细模式
默认情况下,此行代码将抛出 Essence\Exceptions\AssertionException
expect(10)->to_be_equal_to(15)->validate(); // You can also use "go" instead of "validate".
但是,如果您将 true 传递给 validate/go,Essence将输出所有重要数据并退出。
expect(10)->to_be_equal_to(15)->validate(true);
vendor/bin/phpunit # ........ Value: 10 Arguments: #1: 15
速查表
入口点
- essence
- it
- that
- this
- these
- those
链接
- of
- have
- be
- at
- to
匹配器
许可证
MIT许可证 (MIT)。
开发
Makefile 包含各种有用的任务。
运行测试
make run-tests
创建代码覆盖率报告
make coverage-report coverage-report-server
构建文档
make build-docs docs-server