EC-CUBE3プラグインのテスト: EC-CUBE3

Pocket

EC-CUBE3プラグインのテストメモです。

サービス、フォームのテストをメモしています。

構成

cube3
  |
  |--app
     |--Plugin
        |--ExamplePlugin
           |.....
           |--Form
              |-- ExampleType
           |.....
           |--Service
              |--ExampleService.php
              |.....
           |.....
           |--Tests
              |.....
              |-- Service
                  |-- ExampleServiceTest.php
                  |.....
  |
  |.....
  |-- src
  |.....
  |-- tests
       |--Eccube
            |--Tests
               |.....
               |--Form
               |.....
               |--Service

実行

アプリケーションルートでphpunitを実行します。

$ cd /path/to/cube3
$ phpunit app/Plugin/ExamplePlugin/Tests

ExampleServiceTest.php

EC-CUBE本体のTestsを参考に作成します。
基本はEccubeTestCaseクラスを継承します。

namespace Plugin\ExamplePlugin\Tests\Service;

use Eccube\Tests\EccubeTestCase;
use Plugin\ExamplePlugin\ServiceProvider\ServiceProvider;

class ExampleServiceTest extends EccubeTestCase
{
    public function setUp()
    {
        parent::setUp();
        $provider = new ServiceProvider();
        $provider->register($this->app);
    }

    public testExampleMethod() {
        ....
        this.assertEquals($expect, $actual);
    }
}

EccubeTestCaseはSilex\WebTestCaseを継承しているので機能テストも行えます。

ExampleTypeTestのテスト

参考サイト
EC-CUBE3のメモ – ユニットテスト – – Qiita

namespace Plugin\ExamplePlugin\Tests\Form;

use Eccube\Tests\EccubeTestCase;
use Plugin\ExamplePlugin\ServiceProvider\ServiceProvider;
class ExampleTypeTest extends EccubeTestCase
{
    /** @var array デフォルト値(正常系)を設定 */
    private $formData = array(
        'parameter1' => 'テスト入力1です。',
        'parameter2' => 'テスト入力2です。',
    );

    public function setUp()
    {
        parent::setUp();
        $provider = new ServiceProvider();
        $provider->register($this->app);

        // CSRF tokenを無効にしてFormを作成
        $this->form = $this->app['form.factory']
            ->createBuilder(
                'infotown_media_config',
                null,
                array(
                    'csrf_protection' => false,
                )
            )
            ->getForm();
    }

    public function testValidData()
    {
        $this->form->submit($this->formData);
        $this->assertTrue($this->form->isValid());
    }

    .....
}

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。