Hola, buenas
Estoy intentando hacer un test de un formulario que tiene 2 campos:
- Name (
TypeText::class
) - Parent, es un select con una todas las categorías (
EntityType:class
)
NOTA: Actualmente tengo una base de datos para prod y otra para test. Las dos tienen contenido en la tabla category
La configuración es la siguiente:
#config.yml doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 #config_test.yml doctrine: dbal: dbname: "%database_name%_test"
El test:
$crawler = $client->request('GET', '/admin/category/new/'); $value = $crawler->filter('category_form[parent]')->count(); var_dump("Total categorias ".$value);
Al ejecutar PHPUnit me devuelve 0
como resultado.
El html es el siguiente:
<form name="category_form" method="post"> <input type="text" id="category_form_name" name="category_form[name]" required="required" class="form-control" /> <select id="category_form_parent" name="category_form[parent]" class="form-control"> <option value="">select parent</option> <option value="1" >Deportes [es]</option> //ToString Category Entity </select> </form>
¿Alguna sugerencia? Muchas gracias
Respuestas
Solucionado, como solo hay un valor en la base de datos test selecciono el último siempre, ya que el primer valor es el texto del placeholder.
$idSelect = $crawler->filter('#category_form_parent option')->last()->attr('value'); $buttonCrawler['category_form[parent]'] = $idSelect;
Gracias
@JuanluGarciaB
Si lo prefieres, también puedes usar el método availableOptionValues()
para obtener un array con los valores de todas las opciones del <select>
que hayas seleccionado:
$lastOption = array_pop($crawler->filter('#category_form_parent')->availableOptionValues());
Puedes ver más métodos útiles para campos de tipo "choice" en la API de Symfony para ChoiceFormField.
@javiereguiluz
Muchas gracias Javier
@JuanluGarciaB