nathanburkett/mesa-phpunit
Composer 安装命令:
composer require nathanburkett/mesa-phpunit
包简介
PHPUnit DataSet Organization and Orchestration
README 文档
README
PHPUnit Mesa is a table-driven approach to orchestrating data providers in PHPUnit
Installation
Via composer
composer require nathanburkett/mesa-phpunit --dev
Usage
Via GeneratesTestCases Trait
Using the GeneratesTestCases trait is the simplest way to start consuming tables in PHPUnit.
<?php namespace Foo\Bar\Baz; use PHPUnit\Framework\TestCase; use NathanBurkett\Mesa\Fixture\PHPUnit\GeneratesTestCases; class FooTest extends TestCase { use GeneratesTestCases; }
Given a php file of test cases:
<?php // Location __DIR__ . '/DataSets/FooTest/OutputTestCases.php use PHPUnit\Framework\TestCase; use PHPUnit\MockObject\MockObject; return [ 'Expects \'foo\' output' => [ 'setupDependencyOneExpectations' => function (TestCase $test, MockObject $dependencyOne): MockObject { $dependencyOne->expects($test->once())->method('foo')->willReturn(true); return $dependencyOne; }, 'config' => 'Some config', 'expected' => 'FooBarBaz', ], ];
Then build a table targeting a data provider like so:
<?php namespace Foo\Bar\Baz; use PHPUnit\Framework\TestCase; use NathanBurkett\Mesa\Fixture\PHPUnit\GeneratesTestCases; class FooTest extends TestCase { use GeneratesTestCases; /** * @dataProvider generateOutputTestCases * * @param DependencyOne $dependencyOne * @param string $config * @param string $expected */ public function testOutput(DependencyOne $dependencyOne, string $config, string $expected) { $service = new FooService($dependencyOne, $config); $actual = $service->run(); $this->assertEquals($expected, $actual); } /** * @return \Generator */ public function generateOutputTestCases(): \Generator { yield from $this->generateTestCases( 'OutputTestCases.php' // this defaults to looking for test cases in __DIR__ . /DataSets/{ClassName}/{string} // [$this, 'setupOutputTestCase'] Optional setup func ); } /** * @param array $testCase * @return array */ public function setupOutputTestCase(array $testCase): array { $dependencyOne = $this->getMockBuilder(DependencyOne::class) ->disableOriginalConstructor() ->getMock(); return [ $testCase['setupDependencyOneExpectations']($this, $dependencyOne), $testCase['config'], $testCase['expected'], ]; } }
To change default directory where data sets are resolved on a class by class basis, extend PHPUnitDataSetPathResolver and supply a different value for DEFAULT_DIRECTORY constant:
<?php namespace Foo\Bar\Baz; use NathanBurkett\Mesa\Fixture\PHPUnit\PathResolver\PHPUnitDataSetPathResolver; class NewPHPUnitPathResolver extends PHPUnitDataSetPathResolver { /** * @var string */ public const DEFAULT_DIRECTORY = 'TestCases'; }
And inside your testing class:
<?php namespace Foo\Bar\Baz; use PHPUnit\Framework\TestCase; use Foo\Bar\Baz\NewPHPUnitPathResolver; use NathanBurkett\Mesa\Fixture\PHPUnit\GeneratesTestCases; use NathanBurkett\Mesa\Fixture\PHPUnit\PathResolver\PathResolver; class FooTest extends TestCase { use GeneratesTestCases; /** * @return PathResolver */ protected function getTestCasePathResolver(): PathResolver { return new NewPHPUnitPathResolver((string) $this->testCaseContext, new \ReflectionClass($this)); } }
nathanburkett/mesa-phpunit 适用场景与选型建议
nathanburkett/mesa-phpunit 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 48 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 03 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 nathanburkett/mesa-phpunit 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nathanburkett/mesa-phpunit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 48
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-03-24