kigaroo/snapshot-testing
Composer 安装命令:
composer require kigaroo/snapshot-testing
包简介
Provides PHPUnit assertions for snapshot testing
README 文档
README
Provides PHPUnit assertions for snapshot testing
Installation
composer require --dev kigaroo/snapshot-testing
Basic Usage
use KigaRoo\SnapshotTesting\MatchesSnapshots; final class MyUnitTest extends TestCase { use MatchesSnapshots; public function testJson() { $myJsonData = json_encode([ 'foo' => 'bar', ]); $this->assertMatchesJsonSnapshot($myJsonData); } public function testXml() { $myXmlData = "<?xml version="1.0" encoding="UTF-8"?><root><id>7d644cc6-70fa-11e9-89e1-220d3e3a2561</id></root>"; $this->assertMatchesXmlSnapshot($myJsonData); } public function testCsv() { $myCsvData = <<<CSV "foo bar";123 "foo bar";456 "foo bar";789 CSV; $this->assertMatchesCsvSnapshot($myCsvData); } public function testCsvVariant() { $myCsvData = <<<CSV 'foo bar',123 'foo bar',456 'foo bar',789 CSV; $this->assertMatchesCsvSnapshot($myCsvData, [], ',', "'"); } }
Using Wildcards
If you have content in your data which changes intentionally you can use wildcards:
use KigaRoo\SnapshotTesting\MatchesSnapshots; use KigaRoo\SnapshotTesting\Wildcard\UuidWildcard; final class MyUnitTest extends TestCase { use MatchesSnapshots; public function testJson() { $myJsonData = json_encode([ 'id' => '7d644cc6-70fa-11e9-89e1-220d3e3a2561', 'foo' => 'bar', ]); $this->assertMatchesJsonSnapshot($myJsonData, [ new UuidWildcard('id'), ]); } public function testXml() { $myXmlData = '<?xml version="1.0" encoding="UTF-8"?><root><id>7d644cc6-70fa-11e9-89e1-220d3e3a2561</id></root>'; $this->assertMatchesXmlSnapshot($myXmlData, [ new UuidWildcard('id'), ]); } public function testCsv() { $myCsvData = <<<CSV "7d644cc6-70fa-11e9-89e1-220d3e3a2561";123 "7d644cc6-70fa-11e9-89e1-220d3e3a2561";456 "7d644cc6-70fa-11e9-89e1-220d3e3a2561";789 CSV; $this->assertMatchesCsvSnapshot($myCsvData, [ new UuidWildcard('[*][0]'), ]); } }
This ignores the concrete uuid given for the field "id" and only checks that a valid uuid is provided.
The library currently supports the following wildcards:
- BooleanWildcard
- IntegerWildcard
- UuidWildcard
- UuidOrNullWildcard
- DateTimeWildcard
- DateTimeOrNullWildcard
- StringWildcard
- ObjectOrNullWildcard
Usage in CI
When running your tests in Continuous Integration you would possibly want to disable the creation of snapshots.
By using the --without-creating-snapshots parameter, PHPUnit will fail if the snapshots don't exist.
> ./vendor/bin/phpunit -d --without-creating-snapshots
1) ExampleTest::test_it_matches_a_string
Snapshot "ExampleTest__test_it_matches_a_string__1.txt" does not exist.
You can automatically create it by removing `-d --without-creating-snapshots` of PHPUnit's CLI arguments.
kigaroo/snapshot-testing 适用场景与选型建议
kigaroo/snapshot-testing 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 605.43k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2019 年 05 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kigaroo/snapshot-testing 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kigaroo/snapshot-testing 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 605.43k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 34
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-05-06