对于Azure Service Fabric状态服务,可以按如下方式注入IReliableStateManager: ServiceRuntime.RegisterServiceAsync("MyServiceType", context ={ IReliableStateManager stateManager = new ReliableStateManager(context); return new My
ServiceRuntime.RegisterServiceAsync("MyServiceType", context => { IReliableStateManager stateManager = new ReliableStateManager(context); return new MyService(stateManager); }
这样你就可以在MyService的单元测试中模拟IStateManager.
对于有状态的演员来说,这似乎是不可能的. IActorStateManager只有一个内部实现:Microsoft.ServiceFabric.Actors.Runtime.ActorStateManager.那么我如何对一个有状态的演员进行单元测试呢?
在我的actor方法的某个时刻,调用了IActorStateManager,但由于我不能注入这个依赖项,所以单元测试似乎是不可能的.
有没有办法解决这个问题还是有另一种解决方案?
不,IActorStateManager今天不能注射,但我们正在努力实现它.现在(不使用反射)你必须将你的状态操作包装在你可以注入的东西中,并将该调用调用到状态管理器中,然后你可以模拟它进行单元测试.