有没有办法设置AutoFixture.AutoMoq,以便在模拟抽象类时使用特定的构造函数?
我需要测试在抽象类中完成的实现。但是,我确实需要使用一个特定的构造函数。
public abstract class A
{
public A(IQueryable q) // I need to use this
{ /*...*/ }
}
此致
编辑:
我正在尝试使用类似下面的内容,但仍无效。 该类是抽象的,所以我需要模拟它,但我需要一个非常具体的构造函数。
如何告诉AutoMoq在模拟A时请不要使用MockConstructorQuery或GreedyMockConstructorQuery。只需使用QueryableParamConstructorQuery。
fixture.Customize( 新的ConstructorCustomization(typeof(A), 新的QueryableParamConstructorQuery()));
答案 0 :(得分:0)
如果需要特定的构造函数,可以在创建测试double时传递参数列表:
var q = fixture.Create<IQueryable>();
var a = new Mock<A>(q).Object;
如果您需要更改AutoFixture的行为以始终使用此特定构造函数,您可以执行以下操作:
fixture.Register(q => new Mock<A>(q));