我试图找出如何最好地测试以下代码片段,而不必等待实际日期更改:
NotificationCenter.default.addObserver(self, selector: #selector(calendarDayDidChange(notification:)), name: .NSCalendarDayChanged, object: nil)
测试它的一种方法似乎是手动发布通知:
NotificationCenter.default.post(name: .NSCalendarDayChanged, object: nil)
当我测试对#selector函数的更改时,这很好。
但是,在此“测试模式”下,观察者无法捕获后续的日期更改(在午夜之后或在唤醒电话后的某个时间)。
我的问题是:
如果手动发布初始触发器,观察者是否应捕获后续日期更改(即,它应捕获手动触发器,明天的日期更改,以及第二天的日期更改,等等?
或者,通过手动发布触发观察者是否以某种方式拧紧了观察者,使其错过了后续的日期更改(即,为了赶上明天的日期更改,我必须删除发布代码)?
或者,是否没有相对于.NSCalendarDayChanged正确设置观察者?
一个相关的问题:对于每小时的时间更改(例如.NSHourChanged),是否具有等效于.NSCalendarDayChanged的功能,以加快对已执行代码的测试?
NotificationCenter.default.post(name: .NSCalendarDayChanged, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(calendarDayDidChange(notification:)), name: .NSCalendarDayChanged, object: nil)
将在更改日期后触发#selector函数,但仅当应用程序返回到前台时(不幸的是)它会触发。我从这里的其他一些线程了解到,观察者将在后台模式下运行。任何人都可以确认它是否按预期工作(即,仅当应用程序进入前台时才会观察到日期更改)?