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 unterbricht. Mocking das Ergebnis schien die offensichtliche Wahl, 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 nichts für dieses Szenario zu bieten. Übersehe ich etwas oder sollte ich das anders angehen?
Hier ist ein triviales Beispiel, das mit der üblichen "Ungültige Erwartung an ein nicht überschreibbares Mitglied" . Dies ist ein schlechtes Beispiel für die Notwendigkeit, eine Erweiterungsmethode nachzubilden, 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 für alle TypeMock-Junkies, die vorschlagen, dass ich stattdessen Isolator verwenden könnte: Ich weiß die Mühe zu schätzen, denn es sieht so aus, als könnte TypeMock die Aufgabe mit verbundenen Augen und im Rausch erledigen, aber unser Budget wird in nächster Zeit nicht steigen.
3 Stimmen
Ein Duplikat ist hier zu finden: stackoverflow.com/questions/2295960/ .
7 Stimmen
Diese Frage ist ein ganzes Jahr älter als jene. Wenn es Überschneidungen gibt, ist es andersherum.
2 Stimmen
Auch 2019 keine angemessene Lösung!
1 Stimmen
@TanvirArjel Eigentlich könnte man seit vielen Jahren JustMock um Erweiterungsmethoden nachzuahmen. Und ist so einfach wie jede andere Methode zu spiegeln. Hier ist ein Link zur Dokumentation: Erweiterungsmethoden Mocking