模拟数据库从drupal 7开始运行

时间:2018-07-10 13:32:16

标签: drupal-7

我想从下面的代码创建一个phpunit测试,但是我什至不确定是否值得,因为代码包含db_update和db_query函数,因此,这些都是数据库函数,我不知道它是否对此进行测试很有意义,因为我不知道是否应该假设drupal代码可以正常工作。

<?php
namespace Drupal\forum_innovation\Forum;

/**
 * Created by PhpStorm.
 * User: ldcontreras
 * Date: 30/05/18
 * Time: 18:26
 */
class ForumCounter implements ForumInterface {


    public static function setForumCounter($forum, $uid) {
        $counterState = db_update('forum_counter_states')
            ->fields(array(
                'state' => 'read',
            ))
            ->condition('uid', $uid)
            ->condition('tid', $forum)
            ->execute();

        return $counterState;

    }

    public static function getForumNotification($forum, $uid) {
        $unReadNotifications =
            db_query('SELECT count(*) as counter 
                                FROM {forum_counter_states} as f WHERE f.uid = :uid AND f.state = :state AND f.tid = :forum',
                                array(
                                    ':uid' => $uid,
                                    ':forum' => $forum,
                                    ':state' => 'unread'
                                )
            )->fetchAll();

        return $unReadNotifications[0]->counter;
    }
}

我正在尝试创建这样的测试,但是我需要一些帮助和说明:

<?php
/**
 * Created by PhpStorm.
 * User: ldcontreras
 * Date: 8/06/18
 * Time: 10:02
 */

namespace Drupal\forum_innovation\Forum;


class ForumCounterTest extends \PHPUnit_Framework_TestCase {

    public function TestSetForumCounter() {

        $db_query = $this->getMock('db_update',  array('fields', 'condition', 'execute'));

        $db_query->expects($this->once())->method('fields')->with($this->equalTo(array(':uid' => 3024));

        $db_query->expects($this->once())->method('condition')->with($this->equalTo(array(':uid' => 3024)));

        $db_query->expects($this->once())->method('condition')->with($this->equalTo(
            array(':tid' => 83))->will(
            $this->returnCallback('callback'));



    }



}

谢谢!

0 个答案:

没有答案