আমার মনে হচ্ছে আমি এখানে সত্যিই সুস্পষ্ট কিছু মিস করছি। আমার কাছে ক্লাস রয়েছে যার জন্য। নেট কোর আইওপশন প্যাটার্ন (?) ব্যবহার করে বিকল্পগুলির ইনজেকশন প্রয়োজন। আমি যখন ক্লাসের ইউনিট পরীক্ষায় যাই তখন আমি ক্লাসের কার্যকারিতাটি বৈধতা দেওয়ার বিকল্পগুলির বিভিন্ন সংস্করণে উপহাস করতে চাই। কেউ কি জানেন যে কীভাবে সঠিকভাবে স্টার্টআপ ক্লাসের বাইরে আইওপশনগুলি উপহাস / ইনস্ট্যান্টিয়েট / পপুলেট করা যায়?
আমি যে ক্লাসগুলির সাথে কাজ করছি তার কয়েকটি নমুনা এখানে দেওয়া হল:
সেটিংস / বিকল্প মডেল
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
করতে হবে