2016-07-25 6 views
1

が、私は簡単そうのようなメソッドを作成し使用して、データ・オブジェクトのインスタンスを作成することができAutoFixtureを使用して任意のプロパティを記入しないようにAutoFixtureを使用することができます将来来る可能性のあるコンストラクタの変更についても、(フィルタの集まりなので)この場合はすべてのプロパティを埋めます。はどうやってオブジェクトを作成しますが

オブジェクトを作成するようにAutoFixtureに通知する方法はありますか、プロパティを入力することはできませんか?

フィールドをスキップする方法がありませんが、これを使用すると、追加する必要があることがわかりますが、空のオブジェクトから開始し、テストに必要な場合は追加します。

答えて

4

これにはさまざまな方法があります。

あなたは一回限りの操作としてそれを行うことができます。

var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create(); 

ます。また、常に特定のタイプの自動プロパティを省略するfixtureインスタンスをカスタマイズすることができます。

fixture.Customize<FilterItems>(c => c.OmitAutoProperties()); 

かのことができます。自動プロパティを完全に無効にする:

fixture.OmitAutoProperties = true; 

ユニットのいずれかを使用している場合AutoFixture.Xunit2のような接着剤のライブラリを刺す、あなたはまた、宣言的にそれを行うことができます。

[AutoData] 
public void MyTest([NoAutoProperties]FilterItems fi) 
{ 
    // Use fi here... 
} 
+2

うわー、私はちょうどPluralsightであなたの上級コースを見ていました。 4分以内に著者自身からの回答を得ることは驚くべきことではありません!お返事ありがとう、私は完全に、この機能がデフォルト値を持つプロパティをスキップし、それ以外の場合はデフォルト値()になる値をスキップしないことを暗示しているように思われるAutoPropertiesのドキュメントを誤解しています。 – Robba

1

標本を作成する前に_fixture.OmitAutoProperties = true;に電話する必要があります。

関連する問題