Ich schreibe einen Test, der von den Ergebnissen einer Erweiterungsmethode abhängt, aber ich möchte nicht, dass ein zukünftiger Fehler dieser Erweiterungsmethode diesen Test jemals bricht. Das Verspotten dieses Ergebnisses schien die naheliegende Wahl zu sein, aber Moq scheint keine Möglichkeit zu bieten, eine statische Methode zu überschreiben (eine Voraussetzung für eine Erweiterungsmethode). Es gibt eine ähnliche Idee mit Moq.Protected und Moq.Stub, aber sie scheinen für dieses Szenario nichts zu bieten. Vermisse ich etwas oder sollte ich das anders machen?
Hier ist ein triviales Beispiel, das mit der üblichen "Ungültige Erwartung an ein nicht überschreibbares Mitglied" fehlschlägt . Dies ist ein schlechtes Beispiel dafür, wie man eine Erweiterungsmethode verspotten muss, aber es sollte reichen.
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 });
Wie bei allen TypeMock-Junkies, die vorschlagen könnten, stattdessen Isolator zu verwenden: Ich schätze den Aufwand, da TypeMock anscheinend die Arbeit mit verbundenen Augen und betrunken erledigen kann, aber unser Budget steigt nicht so schnell.