1

私はサービスとphpUnitが初めてです。

だから私は私の(働いている)サービスをテストしようとしています。これが私のものservices.ymlです:

services:
    history_cookie:
        class:        VENDOR\Bundle\Service\Visitor\EventListener\HistoryCookie
        scope:        request
        tags:
            -
                name: kernel.event_listener
                method: onKernelRequest
                event: kernel.request
    map_utm_origin:
        class:        VENDOR\Bundle\Service\Visitor\MapUtmOrigin
        arguments:    [@history_cookie, @doctrine.orm.entity_manager]
        scope:        request

コードの残りの部分を要約すると、GET パラメータ (utm) が存在する場合はそれを取得し、それらをセッション変数とプライベート変数に格納するリスナーサービスが呼び出されます。HistoryCookie

もう 1 つの Service はMapUtmOrigin、HistoryCookie Service オブジェクトを取得してこれらのパラメーターを取得し、それらをデータベースのオブジェクトにマップします。

1. 私もサービスにかなり慣れていないので、その状況に対処する最善の方法はありますか?

2.単体テストでうまく動かない

これが機能テストの最後の試みです (私は TheodoEvolutionSessionBundle を使用して Symfony 1.2 / 1.4 セッションを管理しています):

    $configuration = $this->getMock('Theodo\Evolution\Bundle\SessionBundle\Manager\BagManagerConfigurationInterface');
    $configuration->expects($this->once())
        ->method('getNamespaces')
        ->will($this->returnValue(array('array', 'scalar')))
    ;
    $session = new Session(new MockArraySessionStorage());
    $manager = new BagManager($configuration);
    $manager->initialize($session);
    $client = static::createClient();
    $container = $client->getContainer();
    $container->enterScope('request');
    $container->set('session', $session);
    $crawler = $client->request('GET', '/contact?utm_source=google&utm_medium=cpc&utm_campaign=nocampaign');
    $container = $client->getContainer();
    ld($container->get("map_utm_origin"));
    ld($session->getBag("symfony/user/sfUser/attributes"));

ただし、正しく設定されていて$container->get("map_utm_origin")も、要求を処理したことがない (通常は で初期化されるonKernelRequest($requestEvent))ように、常に空 (null ではない) です!$session->getBag("symfony/user/sfUser/attributes")

4

0 に答える 0