एक सर्विस फैब्रिक एप्लिकेशन क्लास के लिए UnitTests लिखना

Dec 16 2020

मैं एक सर्विस फैब्रिक एप्लिकेशन क्लास के लिए यूनिट टेस्ट लिख रहा हूं। मैं कुछ त्रुटियों में भाग रहा हूं, जो मुझे समझ नहीं आ रहा है कि कैसे ठीक किया जाए। वर्ग की परिभाषा इस प्रकार है:

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);
            }
        }
    }
}

आवेदन में निम्नानुसार एक परीक्षण वर्ग परिभाषित है:

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

मुझे निम्नलिखित त्रुटि मिलती है:

ऐसा कोई तर्क नहीं दिया गया है जो 'SearchServiceClass.SearchServiceClass (StatlessServiceContext)' के आवश्यक औपचारिक पैरामीटर 'संदर्भ' से मेल खाता हो।

क्या कोई मुझे बता सकता है कि इसे कैसे ठीक किया जाए?

संपादित करें: मैं ServiceFabric.Mocks को देख रहा हूं। मैं जो समझता हूं वह यह है कि मुझे MockStatelessServiceContextFactory.Defaultएक नकली संदर्भ बनाने के लिए उपयोग करने की आवश्यकता है । मैं यह कैसे कर सकता हूं, निम्नलिखित सही तरीका है ?:

var searchServiceClass = new SearchServiceClass(MockStatelessServiceContextFactory.Default);

जवाब

1 LoekD Dec 16 2020 at 18:46

हाँ, आप निम्न कोड का उपयोग करके अपनी सेवा का परीक्षण उदाहरण बनाने के लिए 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);

देखें इस नमूने परीक्षण और यह एक अधिक जानकारी के लिए।