pyrsmk / minisuite
微单元测试框架
5.0.1
2016-08-02 08:18 UTC
Requires
- php: >=5.4.0
- pyrsmk/chernozem: ^4.1
README
MiniSuite是一个非常简洁且灵活的单元测试工具,旨在提供一个直观且功能强大的API。报告旨在易于阅读。
安装
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()
时,闭包会自动执行。如果您需要关闭值不执行,例如在throws
和doesNotThrow
期望中,您应该使用它来保护
$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 许可证 下发布。