ConfigurationSymfony2 では、このクラス設定を使用して、各ノードがクラスで定義されていること、およびそれらの値が正しく構成されていることをどのようにテストできますか。
テストするクラス
# My\Bundle\DependencyInjection\Configuration.php
クラス Configuration は ConfigurationInterface を実装します
{
/**
* {@inheritDoc}
*/
パブリック関数 getConfigTreeBuilder()
{
$treeBuilder = 新しい TreeBuilder();
$treeBuilder->root('my_bundle')
->子供()
->scalarNode("scalar")->defaultValue("defaultValue")->end()
->arrayNode("arrayNode")
->子供()
->scalarNode("val1")->defaultValue("defaultValue1")->end()
->scalarNode("val2")->defaultValue("defaultValue2")->end()
->終了()
->終了()
->終了()
;
$treeBuilder を返します。
}
}
単体テストで実行したいアサーションは次のとおりです。
ノードに配列としてアクセスしようとしましたが、うまくいかないようです。また、TreeBuilderバンドル拡張によってロードされない限り、構成を配列として取得する可能性はありません。
テスト
# My\Bundle\Tests\DependencyInjection\ConfigurationTest.php
$configuration = $this->getConfiguration();
$treeBuilder = $configuration->getConfigTreeBuilder();
$this->assertInstanceOf("Symfony\Component\Config\Definition\Builder\TreeBuilder", $treeBuilder);
// ツリービルダーのノードにアクセスする方法 ?
$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, "ノードのデフォルト値をテストする");
$this->assertEquals("defaultValue", $val1Node, "ノードのデフォルト値をテストする");
$this->assertEquals("defaultValue", $val2Node, "ノードのデフォルト値をテストする");