In Symfony2, usando questa impostazione di classe, come posso verificare che ciascun nodo sia definito nella classe Configuration
e che i loro valori siano configurati correttamente.Symfony2: Come testare i valori dei nodi di configurazione e l'indice
La classe per testare
# 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; } }
Qui ci sono le affermazioni che vorrei fare, nel mio test di unità:
ho provato ad accedere ai nodi come una matrice, ma non lo fanno sembra funzionare. Anche lo TreeBuilder
non sembra darci la possibilità di ottenere le configurazioni come array, a meno che non vengano caricati dall'estensione del bundle.
Test
# 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");
Io non credo che sia actualy buona idea test di configurazione e anche testarlo in questo modo. – Ziumin
@Ziumin, quale metodo suggeriresti per garantire che un valore abbia un valore predefinito impostato, o un ID di servizio predefinito dovrebbe essere configurato ... – yvoyer
Ti suggerisco di preparare un set di test di congigurazioni e controllare se sono stati elaborati correttamente con il tuo Classe di configurazione – Ziumin