avto-dev/dev-tools

此包已被废弃,不再维护。未建议替代包。

PHP 开发者工具

v2.3.0 2020-06-26 08:30 UTC

README

PHP logo

PHP 开发者工具

Version PHP Version Build Status Coverage Downloads count License

安装

使用以下命令通过 composer 安装此包:

$ composer require --dev avto-dev/dev-tools "^2.0"

需要安装 composer如何安装 composer)。

您需要修复包的主要版本。

使用方法

此包允许您轻松地将辅助工具集成到应用程序中,从而更有效地进行开发。它们可以分为以下几组:

Laravel 辅助服务

对于 Laravel 应用程序,您可以连接以下服务提供者:

服务提供者 其用途
DatabaseQueriesLogger 将所有对数据库的调用记录到应用程序的日志文件中

应用程序单元测试

PHPUnit 框架的上下文中

Bootstrap

Bootstrap 是一个在所有测试开始前只执行一次的文件。其主要任务是准备环境 - 创建临时文件目录(删除之前的),准备数据库模式等。

您可以在 PHPUnit 的配置中指定自己的 bootstrap 文件路径(./phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./tests/bootstrap.php">
    <!-- configuration -->
</phpunit>

对于 Laravel 应用程序

编写递归创建目录、连接数据库的代码可能会让您感到很繁琐。为了简化这个任务,您可以为您的类创建一个 bootsrapper,它能够在创建自己的实例时按顺序执行所有以 boot* 开头的方法。此外,$this->app 已经保存了您应用程序的实例(只需连接必要的 trait 即可)。请看以下示例:

<?php

class MyBootstrap extends \AvtoDev\DevTools\Tests\Bootstrap\AbstractLaravelTestsBootstrapper
{
    use AvtoDev\DevTools\Tests\PHPUnit\Traits\CreatesApplicationTrait;

    public function bootPrepareDatabase()
    {
        $this->app->make(Illuminate\Contracts\Console\Kernel::class)->call('migrate:refresh');
    }
}

您始终在启动测试前拥有“新鲜”的数据库模式。

其他应用程序

更简单的实现

<?php

class MyBootstrap extends \AvtoDev\DevTools\Tests\Bootstrap\AbstractTestsBootstrapper
{
    public function bootMakeSome()
    {
        // Put your code here
    }

    public function bootMakeSomethingElse()
    {
        // Put your code here
    }
}

在两种情况下,都不要忘记创建 ./tests/bootstrap.php 文件,在其中写入 <?php new MyBootstrap();,并在 PHPUnit 的配置中指定 <phpunit bootstrap="./tests/bootstrap.php">

抽象单元测试类

为了更方便地测试您的应用程序,您可以使用本包提供的抽象单元测试类(有适用于 Laravel 应用程序的版本,也有不依赖 Laravel 的版本)。

它们的独特之处在于包含额外的 assert 方法,这些方法可以让您编写更简洁、更富有表现力的测试。此功能通过特性启用,因此您可以在需要时创建自己的抽象类(不是从提供的类继承而来)并包含所需的功能集。

推荐使用抽象类的原因在于其功能将随着时间的推移而扩展,您可以通过执行单个命令 composer update avto-dev/dev-tools 来获取它们的新功能。

对于Laravel应用程序

AvtoDev\DevTools\Tests\PHPUnit\AbstractLaravelTestCase 继承您的测试类。

其他应用程序

AvtoDev\DevTools\Tests\PHPUnit\AbstractTestCase 继承您的测试类。

PHPUnit特性

以下是一个汇总表,列出了特性和它们提供的功能。所有特性都位于 AvtoDev\DevTools\Tests\PHPUnit\Traits

特性名称 功能
AdditionalAssertionsTrait 额外的assert方法
CreatesApplicationTrait 创建Laravel应用程序实例的方法。使用该方法时,可以使用 beforeApplicationBootstrappedafterApplicationBootstrapped 方法
InstancesAccessorsTrait 用于访问类中受保护或私有方法/属性的方法(使用反射)
LaravelEventsAssertionsTrait 用于测试事件及其监听器的方法
LaravelLogFilesAssertsTrait 测试Laravel应用程序日志文件的方法
LaravelCommandsAssertionsTrait 测试Laravel artisan命令的方法
WithDatabaseQueriesLogging 将此特性连接到测试类时,所有数据库查询都将记录到日志文件中(测试类必须继承自 AbstractLaravelTestCase
CarbonAssertionsTrait 用于测试 Carbon 对象的方法
WithDatabaseDisconnects 将此特性连接到测试类时,在 tearDown 时将断开与所有数据库的连接(原因
WithMemoryClean 将此特性连接到测试类时,在 tearDown 时将清除类的属性。要在 Laravel-framework 之外使用此特性,需要在 tearDown 时调用 clearMemory 方法
WithGuzzleMocking 提供创建Guzzle 6 HTTP客户端处理器处理程序的方法的特性
AppVersionAssertionsTrait 用于检查应用程序版本和文件 CHANGELOG.md 中指定的最新版本的方法
LaravelRoutesAssertsTrait 用于检查Laravel路由配置正确性的方法

测试

对于包测试,我们使用 phpunit 框架和 docker-ce + docker-compose 作为开发环境。因此,在克隆存储库后,只需在终端中写入

$ make build
$ make latest # or 'make lowest'
$ make test

变更日志

Release date Commits since latest release

变更日志可以在 此处找到

支持

Issues Issues

如果您发现任何包错误,请在当前存储库中 创建一个问题

许可证

这是一个开源软件,根据 MIT许可证 许可。