PHPUnit如何测试包含get_post_meta()的Wordpress函数?

时间:2017-04-24 16:04:24

标签: php wordpress unit-testing phpunit

我刚开始用Wordpress学习PHPUnit。我有一个小部件,可以从中获取后期数据和元数据。

我的代码如下所示:

           if ($postMeta = get_post_meta($post->ID, 'feature_news_colours_overlay')) {
                $colourOverlay = $postMeta['0'];
            }
          $items[] = [
                'title' => $title,
                'url' => get_permalink($post->ID),
                'description' => $content,
                'colourOverlay' => $colourOverlay,
            ];

小部件从帖子的feature_news_colours_overlay custom_field获取数据。在我的PhpUnit测试中,我可以添加以下内容以使其测试if条件。

          $post = new \stdClass();
          $post->post_title = 'Some title text to test.';
          $post->ID = 1;
          $GLOBALS['post_meta'][0] = '#FFCC00'; 

这实际上用断言:

测试我的Item数组
'title' => 'Some title text to test.',
'url' => 'http://something..',
'description' => 'test desc',
'colourOverlay' => '#FFoooo'

这实际上是在测试我的if条件,因为我认为这不是一种标准方式,如果我必须检查更多1个帖子,我实际上无法用GLOBAL值进行测试。

  

$ GLOBALS [' post_meta'] [0] ='#FFCC00';

有什么方法可以为每个帖子添加一个模拟元值,以便检查if条件。?

1 个答案:

答案 0 :(得分:1)

如果您将帖子ID重新测试到$ post_id,那么

add_post_meta( $post_id, 'your_meta_key', 'your_test_value' ); 
在断言之前,你的测试代码中的

就可以了。