是否有一种惯用的方法来测试状态超时。我的演员采用指定在不同状态下花费的持续时间的类型。一些类似的东西:
startWith(Off,_)
when(Off, stateTimeout = Durations.OffDuration ) => Case Event(,_) goto(On)
when(On, stateTimeout = Durations.OnDuration ) => Case Event(TurnOn,_) goto(Off)
我想测试一下 Off 是否确实转到 On ,反之亦然。
我可以做类似的事情:
val durations = new Durations(1 NanoSecond,1 Second)
// get actor from system
thread.sleep(OffDuration) // 1 nanosecond of wait
assert(actor.StateName == On)
但是睡觉的呼唤感觉不对,我也在争分夺秒地选择“神奇的”持续时间值”