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

相關問題