出于测试原因设置状态机的状态

Setting state of a state machine for test reasons

为了执行单元测试,我需要设置对象的特定状态。由于状态是用状态机实现的,MDriven拒绝将状态值直接赋值给属性。

我可能会触发整个状态机,直到达到所需状态,但我认为有一种更简单的方法可以将状态设置为特定值,该值相当隐藏,因为它通常不应该工作那样。

有人知道怎么做吗?

是 - 在此处阅读详细信息 https://wiki.mdriven.net/index.php/StateMachineForceMode

但基本上您将属性的状态机设置为 ForceMode - 在此之后您可以自由更改状态值:

self.stateMachineForceMode('State'); 
self.State:='State3'; 
        public void StateMachineForceState(string NewState)
    { //use with caution
        string ForceMode = "self.stateMachineForceMode('TheStateAttribute')";
        string close = "self.TheStateAttribute :='close'";
        string open = "self.TheStateAttribute='open'";
        Eco.Handles.DefaultEcoSpace es = this.AsIObject().ServiceProvider().GetEcoService<IEcoSpaceService>() as Eco.Handles.DefaultEcoSpace;
        switch (NewState)
        {
            case "close":
                es.ActionLanguage.Execute(this, ForceMode);
                es.ActionLanguage.Execute(this, close);
                break;
            case "open":
                es.ActionLanguage.Execute(this, ForceMode);
                es.ActionLanguage.Execute(this, open);
                break;
            default:
                break;
        }
    }