2017-03-28 10 views
1

AutoFixture.AutoMoqを設定して、抽象クラスをモックするときに特定のコンストラクタを使用するような方法はありますか?AutoMoq特定のコンストラクタを持つ抽象クラス

抽象クラスで実行された実装をテストする必要があります。しかし、私は特定のコンストラクタを使う必要があります。

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

よろしく、


EDIT:

私は以下のようなものを使用しようとしていますが、まだ動作しません。 クラスは抽象クラスなので、私はそれを嘲笑する必要がありますが、私は非常に具体的なコンストラクタが必要です。

AutoMoqには、MockConstructorQueryとGreedyMockConstructorQueryのどちらも使用しないでください。 QueryableParamConstructorQueryを使用してください。

fixture.Customize( 新しいConstructorCustomization(typeof演算(A)、 新しいQueryableParamConstructorQuery()))。

答えて

0

あなたが特定のコンストラクタが必要な場合は、二重のテストを作成するとき、あなたは引数リストを渡すことができます。

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

あなたは、常にこの特定のコンストラクタを使用してAutoFixtureの動作を変更する必要がある場合は、することができます素晴らしいですが、私は実際にfixture.Create を探していました(Q)または何らかの形でfixture.Create は()私はトンを望んでいることを知っている

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

:このような何かを行いますクエリ可能なリストまたはリストを受け取るコンストラクタです。 db接続文字列を受け取るもの。私は初心者です。 –

+0

@AdanayMartín更新された回答を参照してください。 –

関連する問題