there4/slim-test-helpers

Slim 框架的集成测试辅助工具

v2.1.3 2017-09-27 13:20 UTC

This package is auto-updated.

Last update: 2024-09-20 05:03:08 UTC


README

Slim 框架 3 的集成测试辅助工具

有关完整示例,请参阅配套仓库 there4/slim-unit-testing-example

示例

以下是一个针对非常简单的端点的测试,该端点从应用程序配置中返回版本。我们断言 Slim 返回了 200 状态码,并且版本与我们的期望匹配。

class VersionTest extends LocalWebTestCase
{
    public function testVersion()
    {
        $this->client->get('/version');
        $this->assertEquals(200, $this->client->response->getStatusCode());
        $this->assertEquals($this->app->config('version'), $this->client->response->getBody());
    }
}

以下是一个示例,说明如何在测试用例中传递数据到 POST 端点并在端点中稍后检索它。我们在请求体中传递编码的 JSON 数据。端点中使用 $app->request->getBody() 来检索数据。

// test file
class UserTest extends LocalWebTestCase
{
    public function testVersion()
    {
        ......
        $data = array("user" => 1);
        $data = json_encode($data);
        $this->client->post('/user', $data);
        ......
    }
}

// endpoint file
.....
$app->post('/user', function() use ($app) {
    .....
    $data = $app->request->getBody();
    $data = json_decode($data, true);
    ......
});

DbUnit 示例

如果您想使用数据库测试用例,请使用类 WebDbTestCase注意:请确保您用于测试用例模型的名称不会与您的实际数据库表冲突。

class LocalDbWebTestCase extends \There4\Slim\Test\WebDbTestCase
{
    /**
     * You must implement this method
     * @return PHPUnit_Extensions_Database_DataSet_IDataSet
     */
    public function getDataSet()
    {
        return $this->createFlatXMLDataSet(
            dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixture.xml'
        );
    }
}

设置

您需要一个用于 phpunit 的引导文件来实例化您的 Slim 应用程序。您可以在示例应用程序中看到[一个示例引导文件]。

您将实现自己的 getSlimInstance() 方法,该方法通过扩展 WebTestCase 辅助类来返回您的应用程序实例。