Testing
Page contents
It is recommended to specify names for States and Transitions. This should help when someone tries to debug state machine’s behaviour.
Logging
You can enable internal state machine logging on your platform.
On JVM:
createStateMachine(scope) {
logger = StateMachine.Logger { lazyMessage ->
println(lazyMessage())
}
// ...
}
On Android:
createStateMachine(scope) {
logger = StateMachine.Logger { lazyMessage ->
Log.d(this::class.qualifiedName, lazyMessage())
}
// ...
}
Starting from particular state
For testing, it might be useful to check how state machine reacts on events from particular state. There are several Testing.startFrom()/Testing.startFromBlocking() overloaded functions which allow starting the machine from a specified state or states (for parallel regions):
lateinit var state2: State
val machine = createStateMachine(scope, start = false) {
initialState("state1")
state2 = state("state2")
// ...
}
machine.startFrom(state2)