为了实现单元测试,我需要设置对象的特定状态。由于状态是用状态机实现的,MDriven 拒绝将状态值直接分配给属性。
我可能会通过完整的状态机触发,直到达到所需的状态,但我认为有一种更简单的方法可以将状态设置为一个相当隐藏的特定值,因为它通常不应该以这种方式工作。
有谁知道如何做到这一点?
为了实现单元测试,我需要设置对象的特定状态。由于状态是用状态机实现的,MDriven 拒绝将状态值直接分配给属性。
我可能会通过完整的状态机触发,直到达到所需的状态,但我认为有一种更简单的方法可以将状态设置为一个相当隐藏的特定值,因为它通常不应该以这种方式工作。
有谁知道如何做到这一点?
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;
}
}
是 - 在此处阅读详细信息https://wiki.mdriven.net/index.php/StateMachineForceMode
但基本上你将属性的状态机设置为 ForceMode - 在这之后你可以自由地改变状态值:
self.stateMachineForceMode('State');
self.State:='State3';