¿Cómo me burlo de get_adjacent_post para las pruebas?

2

Estoy intentando simular get_adjacent_post para pruebas de unidad, pero no estoy seguro de cómo simular una función global en PHPUnit

    $badCode = $this->getMockBuilder('get_adjacent_post')
        ->setMethods(array('somthing'))
        ->getMock();

Esto es lo que obtuve hasta ahora que obviamente no funciona.

Y así es como lo uso en el código de producción.

$prev_post = get_adjacent_post( true, '', true, 'topic' );
    
pregunta toy 25.06.2015 - 23:52

2 respuestas

4

Usé WP_Mock durante mucho tiempo, hasta que construí Brain Monkey para resolver algunos problemas que encontré funcionando con ello.

Utilizando Brain Monkey puedes:

use Brain\Monkey\Functions;

Functions::when('get_adjacent_post')->alias(function() {
  // mock here...
});

o

Functions::expect('get_adjacent_post')
  ->atLeast()
  ->once()
  ->with( true, '', true, 'topic' )
  ->andReturnUsing(function( $in_same_term, $excluded_terms, $previous ) {
     // mock here
  });

Esta última sintaxis proviene de Mockery .

Brain Monkey , al igual que WP_Mock , tiene una API para simular también los ganchos de WordPress.

    
respondido por el gmazzap 26.06.2015 - 19:37
2

Creo que estás buscando WP_Mock :

  

WP_Mock es un marco de simulación de API, creado y mantenido por 10up con el propósito de hacer posible una prueba unitaria adecuada dentro de WordPress.

Desde un ejemplo allí , simulabas a get_permalink() como esto:

    \WP_Mock::wpFunction( 'get_permalink', array(
        'args' => 42,
        'times' => 1,
        'return' => 'http://example.com/foo'
    ) );
    
respondido por el J.D. 26.06.2015 - 14:56

Lea otras preguntas en las etiquetas