Wordpress插件+ phpunit测试

时间:2017-08-14 20:48:48

标签: wordpress phpunit

我是wordpress developpement的新手,我有自己的自定义wordpress插件,允许管理员点击多位作者并在帖子中保存数据库中的所有元标记。它工作正常。但我想为此生成测试用例。我安装了phpunit,但我不知道如何编写测试用例。

public function testOne()
{
    $this->factory->post->create();
}

我试过这个,但不明白它是如何工作的。

2 个答案:

答案 0 :(得分:1)

这并不难,但绝对不是微不足道的。您需要为PHPUnit设置一个测试Wordpress数据库来运行测试

我发现这些指南非常有用: https://codesymphony.co/writing-wordpress-plugin-unit-tests/

https://engineering.hmn.md/guides/writing-code/writing-tests/

为了获得PHPUnit设置WordPress测试环境所需的文件,我必须得到一个新的WordPress目录:

https://core.trac.wordpress.org/browser/trunk?order=name

我的单元测试一开始就被MySQLi阻止了一段时间,但是在读完之后我修改了设置:

https://core.trac.wordpress.org/ticket/39327

现在我可以修复单元测试发现的错误:)。

答案 1 :(得分:0)

首先,您应该使用WordPress模块​​进行Codeception,其中包括PHPunit WPTestCase和许多其他工具。

在WordPress中有两种基本的方法来测试这样的东西:

您可以使用浏览器进行测试。这称为验收测试。您列出了证明您正在测试的概念的所有操作,并且您运行浏览器[或浏览器模拟器]来逐步执行任务。您可以查看数据库中您希望看到的工件,并证明它正确发生。在您的情况下,您可能想要设置一些帖子,单击多个作者,然后检查数据库中是否有您期望的元标记。它可能看起来像:

$I = /*am a */ new AcceptanceTester($scenario);
$I->loginAsAdmin();
$I->amOnPage("/wp-admin/post-new.php");
$I->fillField('#content', "lorum ipsum");
$I->click('#publish');

另一种方法是将您的操作封装在OOP类中,并使用WPUnit测试工具对其进行测试。 Codeception使用WordPress核心团队使用的相同PHPUnit库,以及一堆其他工具。 WPUnit方法将数据库加载到内存中,并且可以执行诸如为您的插件设置虚拟帖子之类的操作。所以在你的情况下,你可能有一个班级:

class SystemActionSaveMetaTags{

    public function doSaveMetaTags()

}

您可能有一个名为

的测试
itShouldSaveMetaTags(){
    $id = wp_insert_post();     
    $SystemActionSaveMetaTags = new SystemActionSaveMetaTags;
    $SystemActionSaveMetaTags->doSaveMetaTags($id);
    $this->assertTrue($this->checkForCorrectMetaTags($id));
}

这是一个关于这个主题的教程,因为它与WordPress有关: https://wp-bdd.com/wp-codeception-tutorial/