Ich denke, ich bin ein wenig verwirrt über die Syntax der Moq Callback-Methoden. Wenn ich versuche, so etwas zu tun:Einstellungen Variablenwerte in einem Moq Callback() Anruf
IFilter filter = new Filter();
List<IFoo> objects = new List<IFoo> { new Foo(), new Foo() };
IQueryable myFilteredFoos = null;
mockObject.Setup(m => m.GetByFilter(It.IsAny<IFilter>()))
.Callback((IFilter filter) => myFilteredFoos = filter.FilterCollection(objects))
.Returns(myFilteredFoos.Cast<IFooBar>());
Diese eine Ausnahme auslöst, weil myFilteredFoos
während der Cast<IFooBar>()
Aufruf null ist. Funktioniert das nicht so, wie ich es erwarte? Ich würde denken, FilterCollection
würde aufgerufen werden und dann myFilteredFoos
wäre nicht null und für die Besetzung zulassen.
FilterCollection
ist nicht in der Lage, eine Null zurückzugeben, die mich zu dem Schluss zieht, dass sie nicht aufgerufen wird. Auch, wenn ich erklären myFilteredFoos
wie folgt aus:
Queryable myFilteredFoos;
Der Rückruf beklagt, dass myFilteredFoos verwendet werden kann, bevor es initialisiert wird.
Danke für die Antwort und die Code-Reduzierung! –