pyrsmk/minisuite

微单元测试框架

5.0.1 2016-08-02 08:18 UTC

This package is auto-updated.

Last update: 2024-08-29 03:48:48 UTC


README

MiniSuite是一个非常简洁且灵活的单元测试工具,旨在提供一个直观且功能强大的API。报告旨在易于阅读。

A MiniSuite report

安装

composer require pyrsmk/minisuite

基础知识

MiniSuite不需要您为每个要运行的测试创建一个类,您可以按照自己的意愿编写和组织代码。请注意,所有测试都是在被调用时运行的。

$fruits = ['apple', 'peach', 'strawberry'];

$minisuite = new MiniSuite\Suite('My tests');
$minisuite->expects('I have 3 fruits in my basket') // define the expectation message
          ->that(count($fruits))                    // define the value to verify
          ->equals(3);                              // 'equals' expectation

您也可以链式调用期望

$some_value = 72;

$minisuite->expects('Some message')
          ->that($some_value)
          ->isInteger()
          ->isGreaterThan(0)
          ->isLessThanOrEqual(100);

也支持对数组元素的特定测试

$fruits = ['apples' => 12, 'peaches' => 7, 'strawberries' => 41];

$minisuite->expects('Verify strawberries stock')
          ->that($fruits, 'strawberries')
          ->isDefined()
          ->isInteger()
          ->isGreaterThan(0);

闭包支持

MiniSuite支持闭包以在验证值时执行更多任务

$minisuite->expects('Test')
          ->that(function($minisuite) {
              return 72;
          })
          ->equals(72);

当它们传递给that()时,闭包会自动执行。如果您需要关闭值不执行,例如在throwsdoesNotThrow期望中,您应该使用它来保护

$minisuite->expects('Test')
          ->that($minisuite->protect(function($minisuite) {
              throws Exception();
          }))
          ->throws();

容器

MiniSuite基于Chernozem容器,我们建议您阅读其文档,以便能够使用高级功能,例如为大测试项目提供的服务支持。

您可以通过在that()方法中指定一个Closure来访问容器

$minisuite['fruits'] = ['apples' => 12, 'peaches' => 7, 'strawberries' => 41];

$minisuite->expects('Verify strawberries stock')
          ->that(function($minisuite) {
              return count($minisuite['fruits']['strawberries']) > 0;
          })
          ->equals(true);

使测试具有活力

为了使测试更简洁,您应该使用您冗余的代码,如对象创建来激活它们。每次运行测试时,都会运行hydrate函数,然后您可以为每个测试获得干净的对象。

$minisuite = new MiniSuite\Suite('My tests');

// Init configuration
$minisuite['conf'] = [
    'path' => 'some/path/'
];

// Set hydrate function
$minisuite->hydrate(function($minisuite) {
    $minisuite['logger'] = new SomeLogger($minisuite['conf']);
});

// Test the logger
$minisuite->expects('Verify logger path')
          ->that(function($minisuite) {
              return $minisuite['logger']->getPath();
          })
          ->equals('some/path/');

可用的期望

  • isNull():验证值是否为null
  • isNotNull():验证值是否不为null
  • isEmpty():验证值是否为空(有关更多信息,请参阅文档
  • isNotEmpty():验证值是否不为空
  • equals($value):验证值是否等于指定的参数
  • doesNotEqual($value):验证值是否不等于指定的参数
  • isLessThan($value):验证值是否小于指定的参数
  • isLessThanOrEqual($value):验证值是否小于或等于指定的参数
  • isGreaterThan($value):验证值是否大于指定的参数
  • isGreaterThanOrEqual($value):验证值是否大于或等于指定的参数
  • isBetween($min, $max):验证值是否在指定的值之间(不包括)
  • isNotBetween($min, $max):验证值是否不在指定的值之间(不包括)
  • isBoolean():验证值是否为布尔值
  • isNotBoolean():验证值是否不为布尔值
  • isInteger():验证值是否为整数
  • isNotInteger():验证值是否不为整数
  • isFloat():验证值是否为浮点数
  • isNotFloat():验证值是否不为浮点数
  • isString():验证值是否为字符串
  • isNotString():验证值是否不为字符串
  • isArray():验证值是否为数组
  • isNotArray():验证值是否不是数组
  • isObject():验证值是否为对象
  • isNotObject():验证值是否不是对象
  • isResource() : 验证值是否为资源
  • isNotResource() : 验证值是否不是资源
  • isCallable() : 验证值是否可调用
  • isNotCallable() : 验证值是否不可调用
  • isInstanceOf($class) : 验证值是否为指定类的实例
  • isNotInstanceOf($class) : 验证值是否不是指定类的实例
  • isTheSameAs($value) : 验证值是否与指定的值相同(类似于 === 运算符)
  • isNotTheSameAs($value) : 验证值是否与指定的值不同
  • extends($class) : 验证对象是否继承指定的类
  • doesNotExtend($class) : 验证对象是否不继承指定的类
  • throws($class) : 如果类参数已定义,将验证受保护的闭包是否抛出指定类的异常,否则仅验证是否抛出了异常
  • doesNotThrow($class) : 如果类参数已定义,将验证受保护的闭包是否未抛出指定类的异常,否则仅验证未抛出异常

数组元素还有一些可用的期望

  • isDefined() : 验证元素是否已定义
  • isNotDefined() : 验证元素是否未定义

许可证

MiniSuite 在 MIT 许可证 下发布。