bernardosecades/smoke-testing

PHP项目的烟雾测试

dev-master 2018-03-24 11:28 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:34:06 UTC


README

PHP项目的烟雾测试包。

环境变量

如果您想添加烟雾测试以检查环境变量是否在您的机器上加载并且不为空,您只需要从类 CheckEnvironment 继承

namespace Tests\SmokeTesting;

use BgSmokeTesting\Environment\CheckEnvironment;

class BgFlashCheckEnvironmentTest extends CheckEnvironment
{
    /**
     * {@inheritdoc}
     */
    public function getEnvPath(): string
    {
        return'{ROOT_PROJECT_PATH}/.env.dist'; // OR .env.development
    }
}

并实现方法 getEnvPath()。例如,如果您的文件 .env.dist 中有变量 DB_CONNECTION,但这个变量没有加载或为空,断言将失败,并显示如下消息

"环境变量 'DB_CONNECTION' 不存在" 或 "环境变量 'DB_CONNECTION' 为空"。

Composer 锁文件过时

如果您在解决 composer.json 和 composer.lock 的冲突时处理不当,则有必要确保您的锁文件没有过时。

因此,要添加烟雾测试以避免这类问题,您可以从类 LockFileOutOfDate 继承

namespace Tests\SmokeTesting;

use BernardoSecades\SmokeTesting\Composer\LockFileOutOfDate;

class MyLockFileOutOfDateTest extends LockFileOutOfDate
{
    /**
     * {@inheritdoc}
     */
    public function getProjectPath(): string
    {
        return'{ROOT_PROJECT_PATH}'; 
    }
}

检查您的服务容器是否在处理依赖注入时存在问题

如果您使用的是如 Symfony、Laravel、Yii 等框架,您正在使用容器来处理依赖注入。这些框架使用的容器遵循 PSR-11,因此这个烟雾测试确保您的容器正常工作。您可以在遵循 PSR-11 的任何框架中使用此烟雾测试。

laravel 框架的示例

namespace Tests\Smoke;

use BernardoSecades\SmokeTesting\ServiceContainer\CheckServiceContainer;
use Psr\Container\ContainerInterface;
use Illuminate\Container\Container;

class MyCheckServiceContainer extends CheckServiceContainer
{
    /**
     * @return Container
     */
    protected function getLaravelContainer(): Container
    {
        return require __DIR__.'/../../bootstrap/app.php';
    }

    /**
     * {@inheritdoc}
     */
    protected function getContainer(): ContainerInterface
    {
        return $this->getLaravelContainer();
    }

    /**
     * {@inheritdoc}
     */
    protected function getAllServiceNames(): array
    {
        $bidings = $this->getLaravelContainer()->getBindings();

        if (empty($bidings)) {
            return [];
        }

        return array_keys($bidings);
    }
}

Docker 指南

Docker 指南帮助开发者使用 Docker 设置预发布/开发环境。 此项目的 Docker 指南

执行测试

./vendor/bin/phpnit