如何模拟GET_ANNEXT_POST进行测试

时间:2015-06-25 作者:toy

我想嘲笑你get_adjacent_post 用于单元测试,但我不知道如何在PHPUnit中模拟全局函数

    $badCode = $this->getMockBuilder(\'get_adjacent_post\')
        ->setMethods(array(\'somthing\'))
        ->getMock();
这是我到目前为止得到的结果,显然不起作用。

下面是我如何在生产代码中使用它。

$prev_post = get_adjacent_post( true, \'\', true, \'topic\' );

2 个回复
SO网友:gmazzap

我用过WP_Mock 很长一段时间,直到我Brain Monkey 为了克服一些问题,我找到了解决它的方法。

使用Brain Monkey,您可以:

use Brain\\Monkey\\Functions;

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

Functions::expect(\'get_adjacent_post\')
  ->atLeast()
  ->once()
  ->with( true, \'\', true, \'topic\' )
  ->andReturnUsing(function( $in_same_term, $excluded_terms, $previous ) {
     // mock here
  });
后一种语法来自Mockery.

与WP\\u Mock一样,Brain Monkey也有一个模拟WordPress挂钩的API。

SO网友:J.D.

我想你在找WP_Mock:

WP\\U Mock是一个API模拟框架,由10up构建和维护,目的是使在WordPress中正确进行单元测试成为可能。

从…起an example there, 你会嘲笑的get_permalink() 像这样:

    \\WP_Mock::wpFunction( \'get_permalink\', array(
        \'args\' => 42,
        \'times\' => 1,
        \'return\' => \'http://example.com/foo\'
    ) );

结束

相关推荐