0

我想创建一个类A的实例,它在我的单元测试中继承了StatelessService类。但我不能。我尝试了一切:嘲笑依赖关系,实现我自己的上下文等。如何在服务结构中单元测试无状态服务

当我尝试创建一个实例时,StatelessService在内部的某处抛出NullReferenceException。

完全可以做到吗?

class A : StatelessService 
{ 
    public A(StatelessServiceContext context) : base(context /* Here will be thrown NullReferenceException */) 
    { 
     // It will never even get there. 
    } 
} 

class UnitTest 
{ 
    public void TestMethod() 
    { 
     var activationContext = MOCK<ICodePackageActivationContext>(); 
     var context = new StatelessServiceContext(..., activationContext, ...); 
     var a = new A(context); // Here will be thrown an exception. 
    } 
} 
+0

提供一些代码作为[mcve],可以更好地展示您的问题。它可以用来帮助识别问题并推导出任何可能的解决方案。 – Nkosi

+0

@Nkosi我更新了提供最小伪代码的问题。 – EwanCoder

+0

对于何时何地出现错误,您还需要更具描述性。看看这里的示例,看看你是否可以找到一个示例,帮助https://github.com/Azure-Samples/service-fabric-watchdog-service/blob/90c6418a99b5fcd777a5b7c2a5f6443fdcc9f42a/TestStatelessService/TestStatelessService.cs – Nkosi

回答

1

可以这样做。但不是重新发明轮子,看看服装面料嘲笑https://github.com/loekd/ServiceFabric.Mocks

它包含有用的助手正好你的类型的场景。

+0

我尝试过使用它,它不起作用,并在不同版本的服务结构上引发各种异常。无论如何,我已经解决了我的问题。它与一个类型初始值设定项和一些静态属性不在* my *类中设置。这与服务结构无关。 – EwanCoder

+1

@EwanCoder,请考虑发布反馈/问题的包,所以每个人都可以受益。 https://github.com/loekd/ServiceFabric.Mocks/issues – LoekD

相关问题