मुझे ऐसा लग रहा है कि मुझे यहाँ कुछ स्पष्ट याद आ रहा है। मेरे पास ऐसी कक्षाएं हैं जिन्हें .net Core IOptions पैटर्न (?) का उपयोग करके विकल्पों को इंजेक्ट करने की आवश्यकता होती है। जब मैं इकाई परीक्षण के लिए जाता हूं तो मैं कक्षा के विभिन्न संस्करणों का मजाक बनाना चाहता हूं ताकि कक्षा की कार्यक्षमता को मान्य किया जा सके। क्या किसी को पता है कि स्टार्टअप क्लास के बाहर IOptions को सही तरीके से कैसे मॉक / इंस्टेंट / पॉप्युलेट किया जाए?
यहां उन कक्षाओं के कुछ नमूने दिए गए हैं जिनके साथ मैं काम कर रहा हूं:
सेटिंग्स / विकल्प मॉडल
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace OptionsSample.Models
{
public class SampleOptions
{
public string FirstSetting { get; set; }
public int SecondSetting { get; set; }
}
}
परीक्षण करने के लिए वर्ग जो सेटिंग्स का उपयोग करता है:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using OptionsSample.Models
using System.Net.Http;
using Microsoft.Extensions.Options;
using System.IO;
using Microsoft.AspNetCore.Http;
using System.Xml.Linq;
using Newtonsoft.Json;
using System.Dynamic;
using Microsoft.Extensions.Logging;
namespace OptionsSample.Repositories
{
public class SampleRepo : ISampleRepo
{
private SampleOptions _options;
private ILogger<AzureStorageQueuePassthru> _logger;
public SampleRepo(IOptions<SampleOptions> options)
{
_options = options.Value;
}
public async Task Get()
{
}
}
}
अन्य वर्गों से अलग विधानसभा में इकाई परीक्षण:
using OptionsSample.Repositories;
using OptionsSample.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
namespace OptionsSample.Repositories.Tests
{
public class SampleRepoTests
{
private IOptions<SampleOptions> _options;
private SampleRepo _sampleRepo;
public SampleRepoTests()
{
//Not sure how to populate IOptions<SampleOptions> here
_options = options;
_sampleRepo = new SampleRepo(_options);
}
}
}
IOptions<T>
आप केवल नकली करने के लिए है Value
वर्ग आप इच्छा वापस जाने के लिए