状態のタイムアウトをテストする慣用的な方法はありますか。私のアクターは、さまざまな状態で費やされた期間を指定する型を取ります。次のようなもの:
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)
しかし、睡眠への呼び出しは間違っているように感じ、「魔法の」持続時間の値を選択することで時間と競争しています。」