如何在WordPress中设置用于单元测试的上下文

时间:2013-09-29 作者:soul

我创建了一个wordpress插件,它可以根据保存在Database上的条目将短代码转换为内容:

    global $wpdb;

    $post_id = get_the_ID();
    $post_content = get_the_content();

    $pattern = \'/\\[zam_tweets page=([0-9])\\]/\';
    preg_match($pattern, $post_content, $matches);

    if(!empty($matches)){

        $tweets_table = $wpdb->prefix . \'zam_tweets\';
        $result = $wpdb->get_var("SELECT tweet FROM $tweets_table WHERE post_id = \'$post_id\'");
        $content = $result;
    }

    return $content;
我的问题是如何将上下文设置为特定帖子的上下文,以便在使用get_the_ID() 方法我应该这样做,还是只需要将它们指定为参数?

1 个回复
最合适的回答,由SO网友:P_Enrique 整理而成

如果你有phpUnitconfigured for testing a WP plugin, 您可以使用如下测试用例:

在您的plugin-directory/tests/Some_Test_Case.php:

class Plugin_Test extends WP_UnitTestCase {
    /**
     * @dataProvider post_IDs_and_expected_results
     */
    public function test_something( $post_id, $expected_result ) {
        global $post;
        $post = get_post( $post_id );
        $plugin_content = call_plugin_function(); // Your function name here
        $this->assertEquals( $expected_result, $plugin_content, "Content OK for post $post_id" );
    }
    public function post_IDs_and_expected_results() {
        return array(
            array( 1, \'expected result for post_id = 1\' ),
            array( 2, \'expected result for post_id = 2\' )
        );
    }
}

插件目录中的命令行:phpunit ./tests/Some_Test_Case.php

结束

相关推荐