2017-03-28 47 views
1

有沒有一種方法可以設置AutoFixture.AutoMoq,以便在嘲笑抽象類時使用特定的構造函數?AutoMoq具有特定構造函數的抽象類

我需要測試在我的抽象類中完成的實現。但是,我確實需要使用一個特定的構造函數。

public abstract class A 
{ 
    public A(IQueryable q) // I need to use this 
    { /*...*/ } 
} 

問候,


編輯:

我想使用類似以下,但仍然無法正常工作。 該類是抽象的,所以我需要嘲笑它,但我需要一個非常具體的構造函數。

如何判斷AutoMoq在嘲笑時請不要使用MockConstructorQuery或GreedyMockConstructorQuery。只需使用QueryableParamConstructorQuery。

fixture.Customize( new ConstructorCustomization(typeof(A), new QueryableParamConstructorQuery()));

回答

0

如果你需要一個特定的構造函數,你可以在創建測試雙傳遞參數列表:

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

如果您需要更改AutoFixture的行爲總是用這種特殊的構造,可以做這樣的事情:

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