私がテストする必要があるコードでは、そのような外部依存関係が見つかりました:
var something = GConfig.SConfig[Type.ServiceType1].Names;
この部分のコードは次のようになります。
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace Class
{
public sealed class GConfig
{
public ConcurrentDictionary<Type, GConfigIt> SConfig { get; set; }
public GConfig()
{
SConfig = new ConcurrentDictionary<Type, GConfigIt>();
throw new InvalidOperationException("Error");
}
}
public enum Type
{
ServiceType1,
ServiceType2
}
public class GConfigIt
{
public List<string> Names { get; set; }
public GConfigIt()
{
Names = new List<string>();
}
}
}
その依存関係をシムする必要がありますが、私自身では完全な解決策を見つけることができず、部分的にしか見つかりません:
GConfigIt (およびシミング名) の場合:Fakes.ShimGConfigIt.AllInstances.NamesGet
SConfig をシミングする場合:Fakes.ShimGConfig.AllInstances.SConfigGet
しかし、接続が見つかりません。完全にシムする方法です。
PS 私は単なるテスターであり、既存のコードを変更することはできません。変更を行うには、開発者にそれを行うよう説得する必要があります (つまり、GConfig の追加インターフェイス)。しかし、開発者は、それが「簡単なテスト」または「テストのためのテスト」のためだけの変更ではなく、実際に行う必要があることを確認する必要があります。