rezzza/atoum-bundle

此包已被废弃,不再维护。没有推荐替代包。

围绕 Atoum 单元测试框架的包

安装: 594

依赖: 0

推荐者: 0

安全: 0

关注者: 2

分叉: 3

类型:symfony-bundle

dev-master 2012-11-19 09:17 UTC

This package is not auto-updated.

Last update: 2015-09-03 06:48:01 UTC


README

此包提供将 Atoum 单元测试框架(来自 mageekguy)集成到 Symfony2 的(非常)简单的方式。

安装

全部使用 composer 安装

{
    "require": {
        "jedi/atoum-bundle": "dev-master",
        "mageekguy/atoum": "dev-master"
    },
    "config": {
        "bin-dir": "bin"
    }
}

Composer & Atoum Phar

{
    "require": {
        "jedi/atoum-bundle": "dev-master"
    }
}

下载 Atoum PHAR 存档

简单用法

让您的测试类继承包中的 Tests\Units\Test 类。

不要忘记使用您喜欢的加载方式(require, autoload, ...)加载此类

<?php

//if you don't use a bootstrap file, you need to require the autoload
require __DIR__ . '/../../../../../../../vendor/autoload.php';

// use path of the atoum.phar as bello if you don't want to use atoum via composer
//require_once __DIR__ . '/../../../../../vendor/mageekguy.atoum.phar';

use Jedi\AtoumBundle\Tests\Units;

class helloWorld extends Units\Test
{
}

Web 测试用例

您可以轻松创建一个内核环境

<?php

require __DIR__ . '/../../../../../../../vendor/autoload.php';

use Jedi\AtoumBundle\Tests\Units;

class helloWorld extends Units\WebTestCase
{
    public function testMyTralala()
    {
        $client = self::createClient();
    }
}

已知问题

  • 找不到 AppKernel 的路径,重写 getKernelDirectory 方法并将路径添加到您的 app 目录。

测试控制器

您可以使用 ControllerTest 类(它继承自 WebTestCase)来测试您的控制器。

<?php

namespace vendor\FooBundle\Tests\Controller;

use Jedi\AtoumBundle\Tests\Units\WebTestCase;
use Jedi\AtoumBundle\Tests\Controller\ControllerTest;

class BarController extends ControllerTest
{
    //test a json api method
    public function testGet()
    {
        $client   = static::createClient();
        $crawler  = $client->request('GET', '/api/foobar');
        $response = $client->getResponse();

        $this
            ->integer($response->getStatusCode())
                ->isEqualTo(200)

            ->string($response->headers->get('Content-Type'))
                ->isEqualTo('application/json')
        ;
    }
}