Moq を使用して拡張メソッドをモックする
単体テストの世界では、モックは依存関係を分離し、テストの安定性を確保する上で重要な役割を果たします。ただし、拡張メソッドを扱う場合、従来のシミュレーション技術では不十分であるようです。
人気のあるモック フレームワークである Moq は、拡張メソッドの基礎である静的メソッドのモックを直接サポートしていません。 「オーバーライドできないメンバーに対する期待値が無効です」というエラーは、この制限を適切に要約しています。
次の例を考えてみましょう:
<code class="language-c#">public class SomeType { public int Id { get; set; } } var ListMock = new Mock<List<SomeType>>(); ListMock.Setup(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 });</code>
Moq は List
いくつかの代替案が提案されています:
ただし、これらの方法ではさらに複雑さが増し、場合によっては非現実的になる可能性があります。したがって、テスト戦略では、モック化された拡張メソッドの適合性を必ず考慮してください。
以上がMoq を使用して拡張メソッドを効果的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。