selective/test-traits
Composer 安装命令:
composer require selective/test-traits
包简介
A collection of PHPUnit test traits
README 文档
README
A collection of PHPUnit test traits.
Requirements
- PHP 8.2 - 8.5
Installation
composer require selective/test-traits --dev
Traits
MailerTestTrait
Requirements: composer require symfony/mailer
DI container setup example:
use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Mailer\EventListener\EnvelopeListener; use Symfony\Component\Mailer\EventListener\MessageListener; use Symfony\Component\Mailer\EventListener\MessageLoggerListener; use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mailer\Transport; use Symfony\Component\Mailer\Transport\TransportInterface; // ... return [ // Mailer MailerInterface::class => function (ContainerInterface $container) { return new Mailer($container->get(TransportInterface::class)); }, // Mailer transport TransportInterface::class => function (ContainerInterface $container) { $settings = $container->get('settings')['smtp']; // smtp://user:pass@smtp.example.com:25 $dsn = sprintf( '%s://%s:%s@%s:%s', $settings['type'], $settings['username'], $settings['password'], $settings['host'], $settings['port'] ); $eventDispatcher = $container->get(EventDispatcherInterface::class); return Transport::fromDsn($dsn, $eventDispatcher); }, EventDispatcherInterface::class => function () { $eventDispatcher = new EventDispatcher(); $eventDispatcher->addSubscriber(new MessageListener()); $eventDispatcher->addSubscriber(new EnvelopeListener()); $eventDispatcher->addSubscriber(new MessageLoggerListener()); return $eventDispatcher; }, // ... ],
Usage:
PHPUnit test case:
<?php namespace App\Test\TestCase; use PHPUnit\Framework\TestCase; use Selective\TestTrait\Traits\ContainerTestTrait; use Selective\TestTrait\Traits\MailerTestTrait; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Email; final class MailerExampleTest extends TestCase { use ContainerTestTrait; use MailerTestTrait; public function testMailer(): void { $mailer = $this->container->get(MailerInterface::class); // Send email $email = (new Email()) ->from('hello@example.com') ->to('you@example.com') ->subject('Time for Symfony Mailer!') ->text('Sending emails is fun again!') ->html('<p>My HTML content</p>'); $mailer->send($email); $this->assertEmailCount(1); $this->assertEmailTextBodyContains($this->getMailerMessage(), 'Sending emails is fun again!'); $this->assertEmailHtmlBodyContains($this->getMailerMessage(), '<p>My HTML content</p>'); } }
HttpTestTrait
Requirements
- Any PSR-7 and PSR-17 factory implementation.
composer require nyholm/psr7-server
composer require nyholm/psr7
Provided methods
createRequest(string $method, $uri, array $serverParams = []): ServerRequestInterfacecreateFormRequest(string $method, $uri, array $data = null): ServerRequestInterfacecreateResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface
Usage
<?php namespace App\Test\TestCase; use PHPUnit\Framework\TestCase; use Selective\TestTrait\Traits\ContainerTestTrait; use Selective\TestTrait\Traits\HttpTestTrait; class GetUsersTestAction extends TestCase { use ContainerTestTrait; use HttpTestTrait; public function test(): void { $request = $this->createRequest('GET', '/api/users'); $response = $this->app->handle($request); $this->assertSame(200, $response->getStatusCode()); } }
Creating a request with query string parameters:
$request = $this->createRequest('GET', '/api/users') ->withQueryParams($queryParams);
RouteTestTrait
A Slim 4 framework router test trait.
Requirements
- A Slim 4 framework application
Provided methods:
urlFor(string $routeName, array $data = [], array $queryParams = []): string
Usage:
<?php namespace App\Test\TestCase; use PHPUnit\Framework\TestCase; use Selective\TestTrait\Traits\ContainerTestTrait; use Selective\TestTrait\Traits\HttpTestTrait; use Selective\TestTrait\Traits\RouteTestTrait; final class GetUsersTestAction extends TestCase { use ContainerTestTrait; use HttpTestTrait; use RouteTestTrait; public function test(): void { $request = $this->createRequest('GET', $this->urlFor('get-users')); $response = $this->app->handle($request); $this->assertSame(200, $response->getStatusCode()); } }
Creating a request with a named route and query string parameters:
$request = $this->createRequest('GET', $this->urlFor('get-users')) ->withQueryParams($queryParams);
License
The MIT License (MIT). Please see License File for more information.
selective/test-traits 适用场景与选型建议
selective/test-traits 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 338.2k 次下载、GitHub Stars 达 13, 最近一次更新时间为 2021 年 01 月 23 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「phpunit」 「test」 「traits」 「slim」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 selective/test-traits 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 selective/test-traits 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 selective/test-traits 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
HiDev plugin for PHPUnit
Model mapping, unmapping and validation
Testing Suite For Lumen like Laravel does.
A cli tool which generates unit tests.
Various traits related to xWP packages
Various traits related to xWP packages
统计信息
- 总下载量: 338.2k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 20
- 依赖项目数: 8
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-01-23