我是wordpress developpement的新手,我有自己的自定义wordpress插件,允许管理员点击多位作者并在帖子中保存数据库中的所有元标记。它工作正常。但我想为此生成测试用例。我安装了phpunit,但我不知道如何编写测试用例。
public function testOne()
{
$this->factory->post->create();
}
我试过这个,但不明白它是如何工作的。
答案 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/