Ich muss einen Ausdruck für eine bestimmte Sammlung ausführen, um festzustellen, ob der Ausdruck im Code korrekt geschrieben wird. Aus Gründen des Beispiels werde ich einen unnötigen Kontext auslassen, aber falls jemand es braucht, einfach einen Kommentar abgeben und ich werde die Frage bearbeiten und hinzufügen, was immer Sie brauchen.Wie erstelle ich diesen Ausdruck mit Moq, ohne einen Methodengruppenfehler zu erhalten?
Sagen wir, ich habe folgendes:
public interface IRepository
{
IQueryable<T> Query<T>(Expression<Func<T, bool>> expression);
}
public class Repository : IRepository
{
public IQueryable<T> Query<T>(Expression<Func<T, bool>> expression)
{
return _session.Query<T>(expression);
}
}
und ich möchte eine Spezifikation wie folgt schreiben:
internal class when_executing_some_query : given_some_repository_context
{
Establish context =() =>
{
IQueryable<SomeObject> objects = new List<SomeObject>
{
SomeObject1,
SomeObject2,
SomeObject3,
}.AsQueryable();
_expectedList = new List<SomeObject>
{
SomeObject1,
SomeObject2,
};
MockedRepository.Setup(x => x.Query<SomeObject>(Moq.It.IsAny<Expression<Func<SomeObject, bool>>>)
.Callback<Expression<Func<SomeObject, bool>>>(expression => _actualExpression = expression);
}
Because of =() => _actualList = objects.Select(_actualExpression).ToList();
It should_execute_on_queryable_and_return_the_expected_items =() => //compare _expectedList with _actualList
}
Aber ich bin immer Fehler auf Moq.It.IsAny<Expression<Func<SomeObject, bool>>>
bauen sagen
Die beste überladene Methodenübereinstimmung für 'Project.Domain.IRepository.Query (System.Linq.Expressions.Expression>)' hat einige ungültige Argumente
und
Argument 1: Aus 'Methodengruppe' zu
'System.Linq.Expressions.Expression>' `
oops, das war nur ein Tippfehler in einem Versuch, „zu machen generic“ den Code für die Buchung, vielen Dank für diesen Hinweis aus, habe ich bearbeitet entsprechend –