私は、IOptionsSnapshot<AbOptions>
のasp.netコア内蔵DIインスタンス(動的構成)を取得するクラスAbClass
を持っています。 今このクラスをテストしたいと思います。テストのためにIOptionsSnapshotインスタンスを模擬する方法
私はテストクラスでAbClass
クラスをインスタンス化しようとしているが、私はAbClass
のコンストラクターに注入するIOptionsSnapshot<AbOptions>
のインスタンスをインスタンス化する方法は考えています。
私はMock<IOptionsSnapshot<AbOptions>>.Object
を試しましたが、AbClassではこの値(var x = _options.cc.D1
)を使用しているため、このインスタンスにはいくつかの値を設定する必要があります。
ので、私は
var builder = new ConfigurationBuilder();
builder.AddInMemoryCollection(new Dictionary<string, string>
{
["Ab:cc:D1"] = "https://",
["Ab:cc:D2"] = "123145854170887"
});
var config = builder.Build();
var options = new AbOptions();
config.GetSection("Ab").Bind(options);
のようなコードを持っているが、私は、このオプションとIOptionsSnapshotのモックをリンクする方法を知りません。
AbClass:
public class AbClass {
private readonly AbOptions _options;
public AbClass(IOptionsSnapshot<AbOptions> options) {
_options = options.Value;
}
private void x(){var t = _options.cc.D1}
}
私のテストは、このクラスをインスタンス化:
var service = new AbClass(new Mock???)
とx()
を呼び出すAbClass
のメソッドをテストする必要がありますが、ときにそれが_options.cc.D1
の適切な値を返す必要があり、それが使用されているかAbClassを表示します。また、テストしたいものに関して、望ましい動作を示します。 – Nkosi
@Nkosiは今はっきりしていますか? – arielorvits
良い質問です! 'IOptions 'には、 'Options'クラスに静的な' Create'メソッドがありますが、IOptionsSnapshot 'に対して私と同じようなジャンプはありません。答えが何か不思議です。 –