[解決済み] Moqを使って拡張メソッドをモックするにはどうしたらいいですか?
2023-02-17 13:24:25
質問
拡張メソッドの結果に依存するテストを書いていますが、将来その拡張メソッドが失敗しても、このテストが壊れないようにしたいと思っています。その結果をモック化することは当然の選択のように思われますが Moqは静的メソッドをオーバーライドする方法を提供しないようです。 (拡張メソッドの要件)を提供しないようです。Moq.ProtectedとMoq.Stubで同様のアイデアがありますが、彼らはこのシナリオのために何も提供していないようです。私は何かを見逃していますか、または私はこれについて別の方法で行くべきですか?
以下は、通常の方法で失敗する些細な例です。 オーバーライドできないメンバに対する無効な期待値です。 . これは拡張メソッドをモックする必要がある悪い例ですが、そうする必要があります。
public class SomeType {
int Id { get; set; }
}
var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
.Returns(new SomeType { Id = 5 });
TypeMockのジャンキーは、Isolatorを代わりに使うことを勧めるかもしれません。目隠しして酔っぱらった状態でTypeMockが仕事をするように見えるので、その努力には感謝しますが、我々の予算はすぐには増えないのです。
どのように解決するのか?
拡張メソッドは静的メソッドを装っているだけです。Moq や Rhinomocks のようなモッキングフレームワークはオブジェクトのモックインスタンスしか作成できないので、静的メソッドのモッキングは不可能です。
関連
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] 辞書を繰り返し使用するには?
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] モックとスタブの違いは何ですか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] Moqでメソッドが呼び出されていないことを確認する方法は?
-
[解決済み】C#には拡張プロパティがある?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない