我在我的测试约定中使用 AutoMoqCustomization。
考虑下面的代码。在我向其中一个具体类添加构造函数之前,一切都很好。当我这样做时,我得到“找不到无参数构造函数”。我们知道 AutoFixture 对构造函数没有问题,因为它为我提供了测试对象,该对象one
被证明可以从 IThings 分配......那里没有失败。所以它必须是最小起订量。
这是有道理的,因为我假设builder
是由 moq 生成并传递给GetCommands
方法的。所以我想我可以看到控制权已经从 AutoFixture 传递到了 moq。
这照顾了为什么,但我该怎么办呢?有没有办法指示起订量如何处理,ThingOne
或者有没有办法指示 AutoFixture 忽略起订量IThingBuilders
,而是做一些固定?
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());
}
}