hughsaffar/laravel-test-trap

1.1.4 2023-06-28 14:48 UTC

This package is auto-updated.

Last update: 2024-08-28 17:59:49 UTC


README

PHP Version Latest Version on Packagist GitHub Tests Action Status License

Screenshot of terminal using Laravel Test Trap

Laravel Test Trap 将帮助您捕捉任何运行缓慢的测试,或者在 SQL 查询运行缓慢或多次执行时。Laravel Test Trap 受 phpunit-speedtrap 启发,并针对 Laravel 应用程序进行了优化。

安装

您可以通过 composer 安装此包

composer require --dev hughsaffar/laravel-test-trap

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="TestTrap\TestTrapServiceProvider" --tag="config"

这是发布配置文件的内容

return [
    'ignore_migrations_queries' => env('TEST_TRAP_IGNORE_MIGRATIONS_QUERIES', true),
    'environment_name' => env('TEST_TRAP_ENVIRONMENT', 'testing'),
];
  • 通过将 ignore_migrations_queries 设置为 true,Laravel Test Trap 不会记录与迁移相关的任何查询。如果您在测试中使用 RefreshDatabase 特性,这将非常有用。但是,如果您手动为测试数据库运行迁移,则需要将值设置为 false
  • 默认情况下,Laravel Test Trap 仅在应用程序运行在 testing 环境时记录查询。如果您的应用程序具有不同的测试环境名称,您可以通过更改 environment_name 的值来覆盖它。

使用方法

Laravel Test Trap 附带一个 PHPUnit 扩展类,您需要将其添加到 phpunit.xml 文件中。

<extensions>
    <extension class="TestTrap\TestTrapExtension">
        <arguments>
            <array>
                <element key="speed">
                    <double>500</double>
                </element>
                <element key="queryCalled">
                    <integer>10</integer>
                </element>
                <element key="querySpeed">
                    <double>1000</double>
                </element>
            </array>
        </arguments>
    </extension>
</extensions>

在这个例子中,我们要求 Test Trap 报告任何测试,

  • 运行时间超过 500ms
  • 或在测试中执行单个查询超过 10 次
  • 或查询运行时间超过一秒(1000ms)

禁用 Laravel Test Trap

如果您不希望 Laravel Test Trap 总是与您的测试一起运行,您只需在 phpunit.xml 文件中添加一个环境变量即可禁用它

<php>
   ...
   <server name="TEST_TRAP_DISABLE" value="true"/>
   ...
</php>

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全性

如果您发现任何安全相关的问题,请通过电子邮件 hs@houmaan.ca 而不是使用问题跟踪器来报告。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件