【问题标题】:Testing Unit of DependencyInjection依赖注入测试单元
【发布时间】:2012-09-20 00:35:15
【问题描述】:

我正在使用此示例 here 来执行我的 DependencyInjection 测试单元,但是,当我测试时,我收到以下错误:

Myapp\MyBundle\Tests\DependencyInjection\MybundleExtensionTest::test Load
Argument 1 passed to Myapp\MyBundle\DependencyInjection\Configuration::buil
dPathNode() must be an instance of Myapp\MyBundle\DependencyInjection\NodeD
efinition, instance of Symfony\Component\Config\Definition\Builder\ArrayNodeDefi
nition given, called in E:\wamp\www\testingUnit\src\Myapp\MyBundle\Dependen
cyInjection\Configuration.php on line 33 and defined

DependencyInjection/MyappMybundleExtensions.php

<?php
namespace Myapp\Mybundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\Config\Definition\Processor;


class MybundleExtension extends Extension
{
/**
 * Build the extension services
 *
 * @param array $configs
 * @param ContainerBuilder $container
 */

public function load(array $configs, ContainerBuilder $container)
{
    $processor = new Processor();
    $configuration = new Configuration();

    $config = $this->processConfiguration($configuration, $configs);

    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
    $loader->load('file.yml');

    $config = $processor->processConfiguration($configuration, $configs);


    $container->setParameter('FashionWeb\ProductBundle\Controller\FamilyController::showFamilyAction', $config['action']);
}

}

测试/DependencyInjection/MyappMyBundleExtensionsTest.php

 namespace Myapp\Mybundle\Tests\DependencyInjection;

  use Symfony\Component\DependencyInjection\ContainerBuilder;

  class Myapp\MybundleExtensionTest extends \PHPUnit_Framework_TestCase
 {
public function testLoad()
{

    $container = new ContainerBuilder();

    $extension = new MyappMybundleExtension();

    $extension->load(array(), $container);


    $this->assertEquals('FashionWeb\ProductBundle\Controller\FamilyController::showFamilyAction', $container->getParameter('myapp_mybundle.action'), sprintf('%s parameter is correct', 'myapp_mybundle.action'));

}

}

【问题讨论】:

    标签: unit-testing testing symfony symfony-2.1


    【解决方案1】:

    您的 Configuration.php 文件中有 use Symfony\Component\Config\Definition\Builder\NodeDefinition; 吗?

    错误似乎是由于缺少 use 语句引起的。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2017-04-01
      • 2021-05-29
      • 2018-03-03
      • 2017-11-03
      • 2016-02-16
      • 2010-10-23
      相关资源
      最近更新 更多