私は拡張メソッドの結果に依存するテストを書いていますが、その拡張メソッドの将来の失敗がこのテストを破ることを望んでいません。その結果をあざけるのは当然の選択のように見えましたが、 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 });
代わりにIsolatorを使用することを提案する可能性のあるTypeMockジャンキーについては、TypeMockが目隠しをして醜い仕事をすることができるように見えるので、努力に感謝しますが、予算はすぐには増えません。