Je pense que je pourrais être un peu confus sur la syntaxe des méthodes de rappel Moq. Lorsque j'essaie de faire quelque chose comme ceci :
IFilter filter = new Filter();
List objects = new List { new Foo(), new Foo() };
IQueryable myFilteredFoos = null;
mockObject.Setup(m => m.GetByFilter(It.IsAny()))
.Callback( (IFilter filter) => myFilteredFoos = filter.FilterCollection(objects))
.Returns(myFilteredFoos.Cast());
Cela lance une exception car myFilteredFoos
est null pendant l'appel à Cast()
. Est-ce que cela ne fonctionne pas comme je m'y attends ? Je penserais que FilterCollection
serait appelé et ensuite myFilteredFoos
serait non-null et permettrait la conversion.
FilterCollection
n'est pas capable de retourner un null, ce qui me conduit à la conclusion qu'il n'est pas appelé. De plus, lorsque je déclare myFilteredFoos
comme ceci :
Queryable myFilteredFoos;
L'appel Return se plaint que myFilteredFoos peut être utilisé avant son initialisation.