es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué la aserción “assertSelectorExists()” no muestra el mensaje de fallo que especifico?

Estoy intentando mostrar un mensaje personalizado (la URL que se está probando) cuando falla una prueba de PHPUnit 9.5.11 en mi aplicación Symfony 4.4.

La clase es simple:

class BaseTestCase extends PantherTestCase

En mi prueba, tengo lo siguiente:

$client = static::createPantherClient();
$crawler = $client->request('GET', $url);
$this->assertSelectorExists('.some-class', $url); // <- esto debería mostrar la URL probada, ya que el segundo argumento se supone que es el mensaje a mostrar en caso de fallo

Pero cuando la prueba falla, solo obtengo lo siguiente:

> 1) App\Tests\PropertyListingTest::testListingWithFullQueryString with data set #0 ('') Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":".some-class"} (Session info: headless chrome=97.0.4692.71)

¿Qué está pasando aquí? Si ejecuto lo siguiente:

$this->assertEquals("a", "b", "!!!!TEST FAILED!!!!");

Funciona como se espera:

!!!!TEST FAILED!!!! Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'a'
+'b'
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar un mensaje personalizado (la URL que se está probando) cuando falla una prueba de PHPUnit 9.5.11 en una aplicación Symfony 4.4 que utiliza PantherTestCase, puedes modificar la llamada al método assertSelectorExists para incluir la URL como segundo argumento, que se supone que es el mensaje que se mostrará en caso de fallo.

    En la clase BaseTestCase, actualiza el método de prueba de la siguiente manera:

    $client = static::createPantherClient();
    $url = 'http://example.com'; // reemplazar con la URL correspondiente
    $crawler = $client->request('GET', $url);
    $this->assertSelectorExists('.some-class', sprintf('Elemento no encontrado para la URL: %s', $url));
    

    Esto mostrará un mensaje personalizado que indica la URL que se ha probado cuando el método assertSelectorExists falla. La función sprintf se utiliza para formatear el mensaje con el parámetro de URL.

    Si sigues recibiendo el mismo mensaje de error, podría indicar que no se pudo encontrar el elemento con la clase .some-class en la página, lo que significa que es posible que necesites actualizar el selector CSS.

Comments are closed.