Pruebas unitarias para simular el bucle

4

¿Cómo construyes pruebas unitarias con PHPUnit y el marco de pruebas de WordPress que simulan estar en el bucle? Por ejemplo, si quiero probar una función que solo se puede llamar en el bucle porque asume que los datos de la publicación están configurados adecuadamente para la consulta principal, ¿cómo construiría esa prueba de unidad?

    
pregunta philosophyguy 01.03.2016 - 18:32

3 respuestas

1

La clave para eso es el método go_to de la clase WP_UnitTestCase que debes extender. Simula el análisis de una url en relación con la raíz de wordpress (IIRC). Es posible que primero debas establecer publicaciones y otra información, y luego llamar a go_to para activar el bucle.

    
respondido por el Mark Kaplun 01.03.2016 - 18:45
1

Suponiendo que está utilizando WP_UnitTestCase, intente esto dentro de su clase de prueba:

private $post_id;

// use the factory to create a post with some fake data
public function setUp() {
    parent::setUp();

    $this->post_id = $this->factory()->post->create( 
        array ( 'post_content' => 'Here are some words. <img src="image.jpg"> <!--more--> And here are some more' ) 
    );

}

public function test_a_thing() { 

    // fake going to the URL
    $this->go_to( get_permalink( $this->post_id ) );

    // make sure your relevant globals are set
    global $post;
    setup_postdata($post);

    // profit
    $yourthing->function_you_test();
}
    
respondido por el piersb 23.08.2016 - 13:55
0

Las funciones del complemento de pruebas de unidad en Wordpress son extremadamente difíciles. Por lo general, es más fácil hacer una aceptación o prueba funcional. La diferencia es que en una prueba de unidad, tienes que burlarte de todo con lo que interactúas. En una prueba funcional, puede ejecutar todo el sistema. Por ejemplo, uso Codeception para iniciar un navegador y probar contra todo el sistema. Las opiniones varían, pero creo que todo el concepto de prueba unitaria de un plugin WP es chiflado. El plugin no existe en un vacío. Es un sistema que interactúa con otro sistema. ¿Cuál es el punto de tratar incluso de aislar? BTW - Casi ningún dev en realidad prueba de esta manera. El estado de los marcos de prueba WP es SORRY.

    
respondido por el Jim Maguire 19.06.2016 - 03:22

Lea otras preguntas en las etiquetas