5

テスト規則で AutoMoqCustomization を使用しています。

以下のコードを検討してください。具象クラスの 1 つにコンストラクターを追加するまで、すべてがうまく機能します。そうすると、「パラメーターなしのコンストラクターが見つかりませんでした」というメッセージが表示されます。AutoFixture が IThings から割り当て可能であることが証明されたテスト オブジェクトを提供したため、コンストラクターに問題がないことはわかっていoneます...そこに失敗はありません。だからそれはmoqでなければなりません。

buildermoq によって生成され、メソッドに渡されたと想定しているため、これはある程度理にかなってい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());
    }
}
4

1 に答える 1