質問

私はPexとMolesを初めて使用します。コードでPexを実行しようとしていますが、コンストラクターインジェクションを使用しています。コンストラクターを注入する方法をPexに指示する方法はありますか?

編集 ジェネラコディセタグプレ

スタブuserRepositoryを挿入する必要があります。_userRepository.GetById(id)が呼び出されると、PexはNullReferenceExceptionで失敗します。ユニットテストにMoqを使用していますが、pexとmolesに切り替えたいです

PexFactoriesを使用してスタブを作成する必要がありますか?

役に立ちましたか?

解決

MolesスタブタイプをPexで生成されたパラメーター化されたテストに渡してみてください。パラメータ化されたテストを作成するには、探索するクラスを右クリックし、[ PEX> [パラメータ化された単体テストの作成] を選択します。これにより、引数を含むテストクラスのメソッドが生成されます。個々のテストはこのパラメーター化されたテストを呼び出し、個々のテスト引数を送信します。

テスト対象のコードが引数として依存性注入を使用する場合(インターフェイス型の引数があります)、Pexで生成されたパラメーター化されたテストメソッドにも同じインターフェイス型の引数が含まれます。パラメータ化されたメソッドを呼び出す独自のテストメソッドを記述して、インターフェイスタイプを含む独自の値をフィードすることができます。 Pexで生成されたファイルにそれらを書き込まないように注意してください!

また、ユニットテストインジェクションにMoleStubタイプを使用することを検討することをお勧めします。 MicrosoftMolesリファレンスマニュアルは学習を始めるのに最適な場所です。ユニットテストでMolesを使用する方法について。パラメータ化されたテストを作成すると、インターフェイス用にmolesスタブタイプが作成されます。スタブタイプの迂回を構成し、それをパラメーター化されたテストに渡すだけです。

スタブタイプの迂回路の作成は非常に簡単です。テストプロジェクトで、頻繁に使用される迂回路を構成する構成メソッドを作成することをお勧めします。私は通常、このメソッドの引数として列挙フラグを追加するので、特定の型で作成する迂回路をすべて1回の呼び出しで簡単に判断できます。

サンプル列挙型: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top