Penso che potrei essere un po 'confuso sulla sintassi dei metodi di richiamata Moq. Quando provo a fare qualcosa di simile:Impostazioni valori variabili in una chiamata Callback Moq()
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>());
Questo genera un'eccezione perché myFilteredFoos
è null durante la chiamata Cast<IFooBar>()
. Non funziona come mi aspetto? Penserei che sarebbe chiamato FilterCollection
e quindi myFilteredFoos
sarebbe non-null e consentire il cast.
FilterCollection
non è in grado di restituire un valore null che mi richiama alla conclusione che non viene chiamato. Inoltre, quando dichiaro myFilteredFoos
come questo:
Queryable myFilteredFoos;
La chiamata di ritorno lamenta che myFilteredFoos possono essere utilizzati prima che venga inizializzato.
Grazie per la risposta e la riduzione del codice! –