热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何模拟一个类并重写一个方法

如何解决《如何模拟一个类并重写一个方法》经验,请问有没有懂的朋友?

我正在测试的类在更深的地方使用Redis:

generateMessage();
        $this->publish($message);
    }

    private function publish($message) {
        $this->getPublisher()->publish($message);
    }

    // below just for testing
    private $publisher;

    public function getPublisher() {
        if(empty($this->publisher) {
             return new Publisher();
        }
        return $this->publisher;
    }

    public function setPublisher($publisher) {
        $this->publisher = $publisher;
    }
}

现在我不知道该如何测试。当然,我不想测试Redis。我真正需要测试的是发送给Redis的消息是否符合我的期望。(我认为)我可以编写一个返回消息并公开的函数。但是我不喜欢那个主意。在此示例中,我可以设置发布者,因此在测试时我可以返回另一个发布者类。与其发送消息,不如将其保存在内部,以便稍后声明。

class Publisher {
    public $message;
    function publish($message) {
        $this->message = $message;
    }
}  

但是然后我不知道如何模拟Publisher类来更改方法。否则我将不得不继承Publisher类。同样,通过这种方式,我的测试类必须包含仅用于测试的代码。我也不喜欢。

我该如何正确测试?存在用于Redis的模拟库,但不支持发布。


推荐阅读
author-avatar
奋斗0000012003
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有