簡體   English   中英

為 Service Fabric 應用程序編寫單元測試 Class

[英]Writing UnitTests for a Service Fabric Application Class

我正在為 Service Fabric 應用程序 class 編寫單元測試。 我遇到了一些我不明白如何解決的錯誤。 class 定義是這樣的:

namespace SearchService
{
    internal sealed class SearchServiceClass : StatelessService
    {
        //variables defined followed by constructor
        private string jsonStr;
        public SearchServiceClass(StatelessServiceContext context)
            : base(context)
        {
            //constructor stuff
        }
        
        public bool IsDataJsonLoaded
        {
            get
            {
                return !(jsonStr == null);
            }
        }
    }
}

該應用程序有一個測試 class 定義如下:

namespace SearchService.Tests
{
    //[TestClass]
    public class SearchServiceClassTest
    {
        [Fact]
        public void SearchServiceClassConstructor()
        {
           var searchServiceClass = new SearchServiceClass();
           Assert.True(searchServiceClass.IsDataJsonLoaded);
        }
    }
}

我收到以下錯誤:

沒有給出與“SearchServiceClass.SearchServiceClass(StatelessServiceContext)”所需的形式參數“context”相對應的參數。

有人可以告訴我如何解決這個問題嗎?

編輯:我一直在看 ServiceFabric.Mocks。 我的理解是我需要使用MockStatelessServiceContextFactory.Default來創建模擬上下文。 我該怎么做,以下是正確的方法嗎?:

var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);

是的,您可以使用ServiceFabric.Mocks庫,通過以下代碼創建服務的測試實例:

var serviceInstance = new SearchServiceClass(MockStatelessServiceContextFactory.Default);

作為Default上下文的替代方案,您還可以構建自定義實例:

var newUri = new Uri("fabric:/MockApp/OtherMockStatelessService");
var serviceTypeName = "OtherMockServiceType";
var partitionId = Guid.NewGuid();
var replicaId = long.MaxValue;
var context = new MockCodePackageActivationContext("fabric:/MyApp", "MyAppType", "Code", "Ver", "Context", "Log", "Temp", "Work", "Man", "ManVer");
var context = MockStatelessServiceContextFactory.Create(context, serviceTypeName, newUri, partitionId, replicaId);
var serviceInstance = new SearchServiceClass(context);

有關更多信息,請參閱此示例測試測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM