テスト規則で AutoMoqCustomization を使用しています。
以下のコードを検討してください。具象クラスの 1 つにコンストラクターを追加するまで、すべてがうまく機能します。そうすると、「パラメーターなしのコンストラクターが見つかりませんでした」というメッセージが表示されます。AutoFixture が IThings から割り当て可能であることが証明されたテスト オブジェクトを提供したため、コンストラクターに問題がないことはわかっていone
ます...そこに失敗はありません。だからそれはmoqでなければなりません。
builder
moq によって生成され、メソッドに渡されたと想定しているため、これはある程度理にかなっていGetCommands
ます。したがって、その時点で AutoFixture から moq に制御が渡されていることがわかると思います。
それは理由を処理しますが、それについてどうすればよいですか? moq に対処方法を指示する方法ThingOne
はありますか、または AutoFixture に moq を無視しIThingBuilders
、代わりに Fixtury を実行するように指示する方法はありますか?
public class TestClass
{
public interface IThingBuilders
{
T1 Build<T1>() where T1 : IThings;
}
public interface IThings
{
}
public class ThingOne : IThings
{
public ThingOne(string someparam)
{
}
}
public class ThingTwo : IThings
{
}
public class SomeClass
{
public List<IThings> GetCommands(IThingBuilders builder)
{
var newlist = new List<IThings>();
newlist.Add(builder.Build<ThingOne>());
newlist.Add(builder.Build<ThingTwo>());
return newlist;
}
}
[Theory, BasicConventions]
public void WhyCannotInstantiateProxyOfClass(ThingOne one, ThingTwo two, IThingBuilders builder, SomeClass sut)
{
Assert.IsAssignableFrom<IThings>(one);
Assert.IsAssignableFrom<IThings>(two);
var actual = sut.GetCommands(builder);
Assert.Equal(1, actual.OfType<ThingOne>().Count());
Assert.Equal(1, actual.OfType<ThingTwo>().Count());
}
}