AutoMoq具有特定构造函数的抽象类

时间:2017-03-28 20:49:56

标签: autofixture automoq

有没有办法设置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()));

1 个答案:

答案 0 :(得分:0)

如果需要特定的构造函数,可以在创建测试double时传递参数列表:

var q = fixture.Create<IQueryable>();
var a = new Mock<A>(q).Object;

如果您需要更改AutoFixture的行为以始终使用此特定构造函数,您可以执行以下操作:

fixture.Register(q => new Mock<A>(q));