对私有回调工厂进行单元测试

时间:2019-08-26 15:49:09

标签: python-3.x callback python-unittest private-methods

我正在尝试使用警报管理器类为私有回调工厂创建单元测试。我不想直接测试私有方法,因为我认为这违背了TDD的良好做法,但我找不到解决此问题的好方法。

请不要仅仅告诉我我的代码不好(我已经知道了!)。我只想知道是否可以使用unittest框架进行测试,或者是否需要重新构建代码。

我的班级是一个警报管理器,负责管理警报的创建,调度和声音。创建警报后,警报将通过回调函数传递给调度程序。要创建此回调函数,有一个私有的回调工厂,它使用警报对象来生成自定义回调(同时从manager类中捕获一些变量)

我的问题是,除非我使用调度程序的全部功能,否则将永远不会执行回调,但是显然,修补时间会很麻烦,以确保在合理的时间内执行。此外,回调永远不会返回给用户,因此没有简便的检查(甚至在此处调用)的方法

经理类在很大程度上类似于以下代码:

class Manager:

    def __init__(self):
        self._scheduler = alarm.scheduler.Scheduler()
        self._player = sound.player.Player()

    def create_alarm(self, name, new_alarm):
        self._scheduler.add_job(name, new_alarm.find_next_alarm(),\
            self._create_callback(name, new_alarm))

    def _create_callback(self, name, callback_alarm):
        def callback():
           self._player.play(callback_alarm.get_playback())
        return callback

总体而言,如果我将调度程序设为模拟对象,则有某种方法可以提取回调对象。还是有其他聪明的方法来测试回调正在执行应做的事情?

0 个答案:

没有答案
相关问题