Archives by date

You are browsing the site archives by date.

【PHPUnit】のclient->request()メソッドで送信するヘッダーを追加したい際の注意。

PHP側で正しくヘッダーを捕捉させたい場合はヘッダ名に「HTTP_」のプレフィックスをつけてやる必要がある。

例)
X-XSRF-TOKENという名前のヘッダーを送信したい場合。

$this->client->request(
    $method,
    $uri,
    [], // parameters
    [], // files
    ['HTTP_X-XSRF-TOKEN' => $token]
);

こんな感じ。

 

【Symfony2.3】You cannot create a service (“request”) of an inactive scope (“request”)、というエラーが出たら。

AppKernelクラスを下記のように拡張してやれば解決する。

class AppKernel extends Kernel {
    public function registerBundles() {
        // ...
    }

    public function registerContainerConfiguration(LoaderInterface $loader) {
        // ...
    }

    protected function initializeContainer() {
        parent::initializeContainer();
        if (PHP_SAPI == 'cli') {
            $this->getContainer()->enterScope('request');
            $this->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request');
        }
    }
}

 

【PHPUnit】はじめてのPHPUnit。

はじめてテスト書くときに参考にしました。

http://qiita.com/imunew/items/39ac9283d030a8c4f9d4

 

【Symfony2.3】テストでログイン状態をシミュレートする。

公式にわかりやすい例を見つけたのでペタリ。

http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html

基本的にこのまま書けばログインは可能。
実際にはUsernamePasswordTokenクラスのインスタンスを生成する際、
第1引数にユーザーエンティティをセットしたほうがいろいろと都合がよい。
※ほかの場所でget(‘security.context’)->getToken()->getUser()とかやってる箇所があるとエラー吐くので。

 

【Symfony2.3】UnitTestなどからFixtureをロードする。

setUp()メソッドなどで下記のようにする。

$loader = new Doctrine\Common\DataFixtures\Loader;
$loader->loadFromDirectory('/path/to/MyDataFixtures');
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($em);
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger);
$executor->execute($loader->getFixtures());

詳細は下記公式を参照。

https://github.com/doctrine/data-fixtures#readme

 

【Symfony2.3】DoctrineFixturesの中でContainerを使う。

こうすればいい。(URL参照)

http://symfony.com/doc/2.3/bundles/DoctrineFixturesBundle/index.html#using-the-container-in-the-fixtures

 

【AngularJS】ui-routerを利用している際にURIの遷移を行いたい場合。

$stateサービスのgo()メソッドを用いる。

$state.go('admin.index');

引数にはステート名を渡せばOK。

 

【AngularJS】Serviceの書き方メモ。

app.service('user', [function () {
    this.value = null;
    
    this.set = function(value) {
        this.value = value;
    };
    this.get = function() {
        return this.value;
    };
}]);