使用插件选项对WordPress插件进行单元测试

时间:2013-05-14 作者:Wern Ancheta

我是Wordpress中单元测试的新手。我使用PHP单元和Wordpress tests 但是我在访问插件中设置的插件选项时遇到了问题。

class nrw_pg{

  private $twitter_id;

  public function __construct(){
    $options = get_option(\'nrw_pg_options\');
    $this->twitter_id = (!empty($options[\'nrw_pg_options_twitter_id\'])) ? $options[\'nrw_pg_options_twitter_id\'] : \'\';

  }

  public function get_tweets(){
     $result = null;
     $protocol = is_SSL() ? \'https://\' : \'http://\';
     $result = wp_remote_get($this->protocol . "api.twitter.com/1/statuses/user_timeline.json?screen_name=". $this->twitter_id."&count=11&exclude_replies=true");

     return $result;
   }
}

$GLOBALS[\'nrw_pg\'] = new nrw_pg();
从浏览器访问时,一切都很顺利。但是在单元测试中,它似乎不知道我设置的选项。

require_once(\'D:\\web_files\\tester\\wordpress\\wp-content\\plugins\\nrw_pg\\nrw_pg.php\');

class Nrw_Pg_Test extends WP_UnitTestCase {
    public $plugin_slug = \'nrw_pg\';
    public $options;

    public function setUp() {
        parent::setUp();

        $this->nrw_pg = $GLOBALS[\'nrw_pg\'];

    }

    public function test_get_tweets(){

        $this->assertNotNull($this->nrw_pg->connect());
    }

}
除了wp测试配置之外,还有什么需要设置的吗。php和这里提到的其他东西:https://stackoverflow.com/questions/9138215/unit-testing-wordpress-plugins 为了让这一切顺利进行?

如果添加了特定的过滤器,其他事情似乎也在进行测试。但这些选项似乎尚未初始化。有什么想法吗?

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

由于测试数据库是(通常,并且应该是)一个单独的数据库,因此需要在设置例程中设置适当的选项值(使用add\\u选项或update\\u选项)。

我还建议删除或重置teardown方法中的选项,但我在尝试删除表时遇到了问题(请参阅Plugin development with unit tests).

结束

相关推荐