Symfony2では、このクラス設定を使用して、各ノードがConfiguration
クラスで定義されていることをテストし、その値が正しく設定されていることを確認できます。Symfony2:設定ノードの値とインデックスをテストする方法
ここ
# My\Bundle\DependencyInjection\Configuration.php class Configuration implements ConfigurationInterface { /** * {@inheritDoc} */ public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $treeBuilder->root('my_bundle') ->children() ->scalarNode("scalar")->defaultValue("defaultValue")->end() ->arrayNode("arrayNode") ->children() ->scalarNode("val1")->defaultValue("defaultValue1")->end() ->scalarNode("val2")->defaultValue("defaultValue2")->end() ->end() ->end() ->end() ; return $treeBuilder; } }
をテストするためのクラスでは、私は私のユニットテストでは、やりたい表明している:
私は配列としてノードにアクセスしようとしましたが、それはしないでください動作するようです。また、TreeBuilder
は、バンドル拡張でロードされていない限り、構成を配列として取得する可能性はありません。私はJMSSecurityBundleに基づいて仕事ができるソリューションを発見
テスト
# My\Bundle\Tests\DependencyInjection\ConfigurationTest.php $configuration = $this->getConfiguration(); $treeBuilder = $configuration->getConfigTreeBuilder(); $this->assertInstanceOf("Symfony\Component\Config\Definition\Builder\TreeBuilder", $treeBuilder); // How to access the treebuilder's nodes ? $rootNode = $treeBuilder["my_bundle"]; $scalarNode = $treeBuilder["scalar"]; $arrayNode = $treeBuilder["arrayNode"]; $val1Node = $arrayNode["val1"]; $val2Node = $arrayNode["val2"]; $this->assertInstanceOf("Symfony\...\ArrayNodeDefinition", $rootNode); $this->assertEquals("defaultValue", $scalarNode, "Test the default value of the node"); $this->assertEquals("defaultValue", $val1Node, "Test the default value of the node"); $this->assertEquals("defaultValue", $val2Node, "Test the default value of the node");
私はそれを考えていないが、へactualy良いアイデアですテスト設定を行い、その方法でテストします。 – Ziumin
@ Ziumin、値がデフォルト値に設定されていることを確認するには、どのような方法をお勧めしますか?デフォルトのサービスIDはconfirgured ... – yvoyer
テストセットを準備し、構成クラス – Ziumin