問題タブ [automocking]
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# - AutoMock (Moq) で Lazy<> を使用するにはどうすればよいですか
Autofac.Extras.Moq.AutoMock を使用しています。今、私は Lazy<> を使用してコンストラクターの依存関係を持っています
テストMyService
するには、 をモックする必要がありLazy<Dependency>
ます。
私はこれを試しています
これは、テスト ランナーによって返される例外です。
初期化メソッド Tests.MyServiceTests.MyTestInitialize が例外をスローしました。System.InvalidCastException: System.InvalidCastException: タイプ 'System.Lazy 1[IDependency]' to type 'Moq.IMocked
1[System.Lazy`1[IDependency]]' のオブジェクトをキャストできません..
では、automock を使用して Lazy<> モック オブジェクトを渡すにはどうすればよいでしょうか。
javascript - jestで特定のモジュールを決してモックしない方法は?
特に、私たちのコードベースは多くの場所でアンダースコアを使用しており、アンダースコアをモックしたくはありません。jest.unmock('underscore');
アンダースコアと相互作用する各テストでできることはわかっています。アンダースコアをグローバルにモック解除する方法はありますか?
c# - mock.Provide() を使用して、SUT コンストラクターで使用されるデリゲート ファクトリをセットアップします。
デリゲート ファクトリを介して 1 つのスタブ オブジェクトが渡されたときのクラスの動作をテストしようとしています。すべてのクラスの依存関係 (ファクトリを除く) がモック オブジェクトとして渡され、想定どおりに動作するバージョンのテストを作成しました。今、AutoMock を使用してコンテナにモックを自動的に作成させようとしています。
mock.Provide() を使用して、ClassUnderTest のコンストラクターでデリゲート ファクトリの具体的な値を渡す際に問題が発生しています。(このコメントが示唆するように)
私がテストしているクラス:
ビジネスロジックモジュール:
テストクラス:
}
私が間違っていることについての指摘に感謝します。私は何が欠けていますか?どうすれば修正できますか?単純な構文の修正ですか、それともこのテストへの私のアプローチに何か問題がありますか?
お時間をいただきありがとうございます。
c# - コンストラクターに Func を使用した依存関係がある場合、Moq CreateInstance が失敗する
私たちは IOC に Autofac を使用しており、このFunc<T>
アプローチを使用すると (負荷がかかっている場合) パフォーマンスが大幅に向上することがわかりました。これは、これらの依存関係が使用されるまで解決されず、シナリオによっては特定の依存関係が使用されないためです。
一部の単体テストにも Moq を使用しています。
この時点で爆発します -System.NullReferenceException : Object reference not set to an instance of an object.
Moq に Func の依存関係をうまく処理するように指示する方法を知っている人はいますか?
に変更Func<IRarelyGetUsed>
してIRarelyGetUsed
も例外はありません。
編集: nuget パッケージはかなり古いことがわかりました。パッケージを更新した後、https://github.com/tkellogg/Moq.AutoMocker
これは機能するようになりました。
ただし、解決すべき問題がもう 1 つあります。
上記のメソッドの結果をセットアップしようとすると、-Unable to cast object of type 'System.Linq.Expressions.InstanceMethodCallExpressionN' to type 'System.Linq.Expressions.InvocationExpression'
編集2:
Func<IRarelyGetUsed>
上記は機能するようになりましたが、と-の両方を設定するIRarelyGetUsed
必要があります。1 つだけを実行する必要がある場合は便利ですが、そうでない場合は、テストごとのオーバーヘッドが大きくなります。