bound1ess/essence

提供干净和灵活的BDD风格API的高度评价PHP断言框架。

1.5.1 2015-04-06 16:02 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:07:22 UTC


README

Essence是一个非常适合PHP现有PHPUnit项目的非常灵活的BDD风格断言框架。

安装

composer require --dev bound1ess/essence

理念

在大多数PHP测试框架中,你都会绑定到具体的匹配器名称(例如,assertEqualshouldHaveType)。我不喜欢这样。这就是我创建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足够聪明,可以像您期望的那样处理所有这些情况。那么,您如何构建查询字符串(或断言)呢?

  1. 决定您是否需要配置您计划使用的匹配器。目前,只有两个匹配器可以在配置模式下使用 - ValuesMatcherKeysMatcher
  2. 确定您需要使用哪个匹配器来完成工作。是 ThrowMatcher 还是,比如说,RespondMatcher
  3. 添加一些链接以使断言更易于阅读。
  4. 选择合适的入口点(expectthisthese 等)。
  5. 传递适当的值和参数。
  6. 如果您想,可以添加 ->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