mileschou/slim-test

为 Slim Framework 3 简单测试助手

v0.0.1 2022-06-24 15:55 UTC

This package is auto-updated.

Last update: 2024-08-24 21:24:51 UTC


README

Latest Stable Version Build Status codecov License

Slim Framework 3 提供简单的测试助手

该存储库在 tests 文件夹中包含一些示例。 app.php 是使用简单 Slim 路由的定义,SlimCaseTest.php 是对 SlimCase 类的测试,而 ClientTest.php 是对 Client 类的测试。如果您想使用 PHPUnit 风格编写测试,则可以使用 Client;或者使用 Codeception 风格的 SlimCase

使用 Composer 安装

$ composer require --dev mileschou/slim-test

在 PHPUnit 中使用对象

首先,在测试代码中准备您的 Slim 应用程序,并将其传递给 SlimCase 构造函数。

use MilesChou\Slim\Test\SlimCase;

class SlimAppTest extends PHPUnit_Framework_TestCase
{
    public function setUp()
    {
        $app = require 'path/to/app.php';
        $this->slimCase = new SlimCase($app);
    }
}

现在,您可以使用 Codeception 风格 进行断言。

public function testSeeResponseOk()
{
    // Arrange
    $url = '/will/return/ok';

    // Act
    $this->slimCase->sendGET($url);

    // Assert
    $this->slimCase->seeResponseOk();
}

Client 对象在 SlimCase 中的可见性为公共。这意味着您可以使用 Client 如下所示:

$this->slimCase->client->get($url);

直接访问客户端对象是不安全的。未来可见性将修改为 private

在 PHPUnit 中使用 trait

您还可以在 PHPUnit 中使用 ClientTraitSlimCaseTrait。以下是一个示例:

use MilesChou\Slim\Test\SlimCaseTrait;

class SlimAppTest extends PHPUnit_Framework_TestCase
{
    use SlimCaseTrait;

    public function setUp()
    {
        $app = require 'path/to/app.php';
        $this->setSlimApp($app);
    }

    public function tearDown()
    {
        $this->setSlimApp(null);
    }

    public function testSeeResponseOk()
    {
        // Arrange
        $url = '/will/return/ok';

        // Act
        $this->sendGET($url);

        // Assert
        $this->seeResponseOk();
    }
}

在 Behat 中使用

Behat 中使用 Slim Test 很简单。例如,我有一个功能文件

# features/app.feature
Feature: an example testing use behat

  Scenario: Test assert response is okay
    Given a route named "/will/return/ok"
    When visit "/will/return/ok"
    Then I should see response okay

并轻松实现上下文文件

// features/bootstrap/FeatureContext.php
use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
use MilesChou\Slim\Test\SlimCaseTrait;

class FeatureContext implements Context, SnippetAcceptingContext
{
    use SlimCaseTrait;

    public function __construct()
    {
        // bootstrap your slim app
        $app = require __DIR__ . '/../../app.php';
        $this->setSlimApp($app);
    }

    /** @Given a route named :url */
    public function aRouteNamed($url) { /** Do nothing */ }

    /** @When visit :url */
    public function visit($url)
    {
        $this->sendGET($url);
    }

    /** @Then I should see response okay */
    public function iShouldSeeResponseOkay()
    {
        $this->seeResponseOk();
    }
}

测试

使用 PHPUnitBehat 执行所有测试套件

$ php vendor/bin/phpunit
$ php vendor/bin/behat

您也可以使用 composer 脚本

$ composer test

如果您想通过浏览器检查 HTTP 响应,则运行 PHP 内置服务器

$ php -S 0.0.0.0:8080 -t public

许可证

Slim Test 在 MIT 许可证下发布。有关更多信息,请参阅 许可证文件