1

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

4

1 回答 1

0

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

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

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

fixture.Register(q => new Mock<A>(q));
于 2017-03-29T05:32:41.900 回答