Я пытаюсь генерировать Expression<Predicate<T>>
с AutoFixture таким образом:Создать предикат выражения с AutoFixture
var fixture = new Fixture();
var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception
Когда я запускаю этот код я получаю следующее исключение:
System.InvalidCastException
Unable to cast object of type
'System.Linq.Expressions.Expression`1[System.Func`1[System.String]]'
to type
'System.Linq.Expressions.Expression`1[System.Predicate`1[System.String]]'.
at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context, T seed)
at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context)
Теперь, когда я запустить что-то подобное, но с Predicate<T>
заменено на Func<T>
код работает хорошо.
var func = _fixture.Create<Expression<Func<string, bool>>>(); // no exception
Кроме того, все хорошо, если я пытаюсь создать Predicate<T>
(вместо Expression<Predicate<T>>
)
var predicate = _fixture.Create<Predicate<string>>(); // no exception
Что я здесь делаю неправильно? Есть ли способ создать предикатные выражения с помощью AutoFixture?
Как бы вы создали его без AutoFixture? –