Burada gerçekten bariz bir şeyi kaçırdığımı hissediyorum. Net Core IOptions modelini (?) Kullanarak seçeneklerin enjekte edilmesini gerektiren sınıflarım var. Bu sınıfın birim testine gittiğimde, sınıfın işlevselliğini doğrulamak için seçeneklerin çeşitli sürümleriyle alay etmek istiyorum. IOptions'ı Startup sınıfının dışında doğru şekilde nasıl alay edeceğini / başlatacağını / dolduracağını bilen var mı?
İşte çalıştığım sınıfların bazı örnekleri:
Ayarlar / Seçenekler Modeli
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; }
}
}
Ayarları kullanan test edilecek sınıf:
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()
{
}
}
}
Diğer sınıflardan farklı bir montajda birim testi:
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>
yalnızca alay etmek zorunda Value
arzu sınıfı dönmek için