問題タブ [automoq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - AutoMoq でジェネリック クラスのプロパティをパラメーターとして渡す
私がやろうとしているのは、AutoFixture と Moq を使用してリポジトリを作成することを一般化することです。リストに偽のレコードを追加する「add」というメソッドがあります。リストはレコードと呼ばれ、クラスに対してグローバルです。一般的な M は、嘲笑されるモデルです。メソッドは「this」を返すため、メソッドをチェーンできます。
拡張クラスを使用します(これはSOの検索で見つかりました):
私が得ているエラーは、「Ploeh.AutoFixture.dll で ArgumentException が発生しました」です。
私の質問は次のとおりです。コンパイル時にモデルが不明な場合、メソッドのパラメーターとして汎用オブジェクトのプロパティを渡すにはどうすればよいですか?
c# - AutoFixture Data Theories を使用した AutoMock のセットアップ
私の他の質問で答えたように、AutoMoq
デフォルトでは AutoFixture を使用しません。それは問題なく、セットアップと設定を行うことで簡単に解決できますReturnsUsingFixture
。
しかし、それは Auto Fixture Data Theories でセットアップできますか?
そこで、私が呼び出すカスタム AutoDataAttribute があります[MyAutoData]
。そこで、 のような一連のカスタマイズを呼び出してセットアップし、AutoConfiguredMoqCustomization
webapi コントローラーを生成するように構成し、多くのカスタム ジェネレーターを登録します。そのため、ボイラープレート構成のほぼすべてをいくつかの基本的な構成ファイルに引き出すことができました。MyAutoData
システム テスト用の属性も設定されているので、たとえば を要求するId<Account>
と、実際の webapi 呼び出しを使用して新しいアカウントが作成され、有効なアカウント ID が返されます。
AutoMoq
しかし、メソッドの戻り値を設定するためにそれをどのように処理できますか? 次に例を示します。
他のすべてのケースでは、この種の構成をMyAutoData
(またはそれが呼び出すクラスに) 移動することができました。しかし、AutoMoqの場合、それがどのように機能するかわかりません。フィクスチャを行うことはできません。
AutoFixture がアイテムを生成した後、テスト メソッドに配信される前にセットアップ メソッドをトリガーする方法はありますか? または、常に使用するように AutoMoq の動作をカスタマイズする方法はあります.ReturnsUsingFixture(fixture)
か? それとも、この問題についてすべて間違って考えているだけですか?
moq - AutoMoqCustomization で Strict MockBehavior を使用するにはどうすればよいですか?
AutoFixture.AutoMoq パッケージで AutoFixture を使用すると、テスト対象を正しくテストするように構成されていないテストが見つかることがありますが、デフォルトの (Loose) Mock 動作のために問題が発見されることはありませんでした。
モックを Strict 動作で作成したいので、Setup()
呼び出されると予想されるメソッドを呼び出さなければなりません。次のように、個々のモックごとにこれを行うことができます。
しかし、AutoMoqCustomization() およびさまざまなISpecimenBuilder
実装のソース コードをくまなく調べた後、すべてのモックを厳密な動作で初期化するための最善の方法についてかなり迷っています。このフレームワークは非常に柔軟で拡張可能であるように見えるので、これを行う簡単な方法があると確信していますが、方法がわかりません。
moq - AutoMoq が Fixture によって作成されたメソッドの値を返すようにする
AutoMoq によって作成されたすべての Moq-mocks がデフォルトで Fixture によって作成された値をメソッドの戻り値として返すように設定することで、時間を節約できるかどうかを調べたいと思います。
これは、次のようなテストを行う場合に役立ちます。
生成された値はプロキシ内 (?) にキャッシュする必要があることに注意してください。チェックするために、同じ値を「凍結」する必要があります。また、モックを設定するとSetup
、作成された値が上書きされます。
では、これを行うために AutoMoq モックを変更するにはどうすればよいでしょうか?
それが機能することを確認する簡単なテストは次のようになります。
c# - xUnit/Shouldly/AutoMoq/Autofixture で、InlineAutoMoqData を使用して Type を渡すことができますか?テスト自体で?
単体テストで解決できなかった問題があります。最も簡潔に言うと、次のようになると思います。
Theory InlineAutoMoqData のパラメーターで提供される Type を、Shouldly の Should.Throw メソッドの T として使用できるようにしたいと考えています。これにより、メソッドに複数の例外が関連付けられている場合に、さまざまな例外タイプを期待して、さまざまな行テスト (このフレームワークではインライン理論だと思います) を作成できます。
可能かどうかはわかりませんが、単体テスト自体の例を次に示します。
このようなことは可能ですか?
編集:
xUnit では、Assert.Throws(Type, Delegate) メソッドを使用してこれを実現できることがわかりました。
タイプをジェネリックメソッドにしたいときはいつでもそれを達成する方法があるかどうかを知りたいです。
c# - モックされたインターフェイスは、各プロパティで 2 つのファントム呼び出しを取得します
現在の時刻をプレフィックスとしてコンソールにメッセージを書き込む単純なクラスがあります。IDateTimeProvider
抽象化としてインターフェースに依存していますDateTime.Now
Write
メソッドの呼び出しをテストするために、IDateTimeProvider.Now
xUnit、AutoFixture、および Moq を使用して次のテストを作成しました。
http://blog.ploeh.dk/2010/10/08/AutoDataTheorieswithAutoFixture/AutoMoqDataAttribute
で見られるように使用しています
上記のテストは、次のメッセージで失敗します。
モックで 1 回の呼び出しが期待されていましたが、3 回でした: m => m.Now
セットアップが構成されていません。
だから私の質問は: 余分な呼び出し (インターフェイスのプロパティごとに 2 つ) はどこから来るのですか?
問題の使用を控えると、次AutoMoqDataAttribute
のようになります。
このバージョンのテストはパスしますが、私はむしろパラメーターを使用してテストを行います。