2017-08-14 129 views
0

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

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

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

+0

你可以从这里开始(https://phpunit.de/manual/current/en/index.html) – xmike

回答

1

这并不难,但它绝对不是微不足道的。你需要建立一个测试WordPress数据库只是为PHPUnit的运行测试

我发现真正有用的这些指南: 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

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

0

首先,您应该使用用于Codeception的WordPress模块​​,其中包括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() 

} 

你可能有一个名为test

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

这里是关于主题的教程,因为它涉及到WordPress: https://wp-bdd.com/wp-codeception-tutorial/