cuteninja/parabola-bundle

Cute-Ninja项目常用的代码处理API(ResponseBuilder、测试、...)

安装次数: 1,719

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

公开问题: 2

类型:symfony-bundle

1.0.0 2016-04-28 14:30 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:27 UTC


README

此扩展包提供处理Rest API的工具。它包括响应构建器(成功、服务器错误、客户端错误)和功能测试(使用Behat)。

配置

要使用“响应必须优化”,您需要在config_test.yml中启用分析器

profiler:
    enabled: true

并在实例化内核时启用调试

new \AppKernel('test', true);

并在您的parameters.yml中定义cute_ninja_parabola_allowed_origins,其中包含您的API的URL。此参数是一个数组,允许您有多个允许的源。

例如

cute_ninja_parabola_allowed_origins: 
    - 'http://api.my-application.com'

要启用API包装并访问symfony2分析器的显示,请将以下内容添加到您的parameters.yml中

wrap_api_response: true

BaseContext

在您的项目中创建一个BaseContext,如下所示

use CuteNinja\ParabolaBundle\Tests\Feature\Context\BaseContext as ParabolaBaseContext;

class BaseContext extends ParabolaBaseContext
{

}

数据库结构 & 数据

功能测试要求您生成数据库结构并用数据填充它。最好的方式是实现两个带有“@BeforeSuite”和“@AfterScenario @regenerateDB”注解的方法。为了优化数据库加载,我们生成在每个套件之前和在每个场景之后使用“@regenerateDB”的代码。这样,例如在List API测试之后,我们不会重新加载数据库,因为数据库内容没有发生变化。

use CuteNinja\ParabolaBundle\Tests\Feature\Context\BaseContext as ParabolaBaseContext;

class BaseContext extends ParabolaBaseContext
{
    /**
     * @BeforeSuite
     */
    public static function beforeSuite()
    {
        // Implement your own DB structure and data logic
    }

    /**
     * @AfterScenario @regenerateDB
     */
    public function regenerateDBAfterScenario()
    {
        // Implement your own DB structure and data logic
    }
}

如果您想使用https://github.com/Cute-Ninja/memoria-bundle来处理数据库结构和数据,请将其添加到您的项目中并使用以下代码。

use CuteNinja\ParabolaBundle\Tests\Feature\Context\BaseContext as ParabolaBaseContext;

class BaseContext extends ParabolaBaseContext
{
    /**
     * @BeforeSuite
     */
    public static function beforeSuite()
    {
        $process = new Process("php bin/console doctrine:schema:create --env=test");
        $process->setTimeout(3600);
        $process->run();

        $process = new Process("php bin/console cute_ninja:fixture:load --env=test");
        $process->setTimeout(3600);
        $process->run();
    }

    /**
     * @AfterScenario @regenerateDB
     */
    public function regenerateDBAfterScenario()
    {
        $process = new Process("php bin/console doctrine:schema:drop --force --env=test");
        $process->setTimeout(3600);
        $process->run();

        $process = new Process("php bin/console doctrine:schema:create --env=test");
        $process->setTimeout(3600);
        $process->run();

        $process = new Process("php bin/console cute_ninja:fixture:load --env=test");
        $process->setTimeout(3600);
        $process->run();
    }
}