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